亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? btree2m.txt

?? C++描述的數(shù)據(jù)結(jié)構(gòu)內(nèi)容,在C++builder的環(huán)境中運(yùn)行,這是第二部分
?? TXT
字號(hào):
//二叉樹類定義btree2.h
//定義二叉樹結(jié)點(diǎn)類型
template<class T>class BinaryTree;
template<class T> struct BTreeNode {
 private:
  BTreeNode<T> *left;//左子樹指針
  BTreeNode<T> *right;//右子樹指針
 public:
  T data;//數(shù)據(jù)域
  //構(gòu)造函數(shù)
  BTreeNode():left(NULL),right(NULL) { }
  BTreeNode(T item,BTreeNode<T> *left1=NULL,
    BTreeNode<T> *right1=NULL):data(item),
    left(left1),right(right1){ }
  BTreeNode<T> *&Left(){return left;}
  BTreeNode<T> *&Right(){return right;}
  friend class BinaryTree<T>;
};
//二叉樹類定義
template<class T>class BinaryTree {
 private:
  BTreeNode<T> *root;
 public:
//構(gòu)造函數(shù),初始化二叉樹為空
  BinaryTree() {root=NULL;}
//根據(jù)字符數(shù)組a的二叉樹廣義表建立對(duì)應(yīng)的二叉樹存儲(chǔ)結(jié)構(gòu)
  void CreateBTree(char* a);
//判斷二叉樹是否為空
  bool BTreeEmpty() {return root==NULL;}
//按任一種遍歷次序輸出二叉樹中的所有結(jié)點(diǎn)
  void TraverseBTree(int mark);
//用于遍歷的遞歸函數(shù)
  void Traverse(BTreeNode<T> *&BT,int mark);
//求二叉樹的深度
  int BTreeDepth();
//用于求二叉樹深度的遞歸函數(shù)
  int Depth(BTreeNode<T> *&BT);
//求二叉樹中所有結(jié)點(diǎn)數(shù)
  int BTreeCount();
//用于求二叉樹中所有結(jié)點(diǎn)數(shù)的遞歸函數(shù)
  int Count(BTreeNode<T> *&BT);
//求二叉樹中所有葉子結(jié)點(diǎn)數(shù)
  int BTreeLeafCount();
//用于求二叉樹中所有葉子結(jié)點(diǎn)數(shù)的遞歸函數(shù)
  int LeafCount(BTreeNode<T> *&BT);
//按照二叉樹的一種表示方法輸出整個(gè)二叉樹
  void PrintBTree();
//用于輸出整個(gè)二叉樹的遞歸函數(shù)
  void Print(BTreeNode<T> *&BT);
//用于清除二叉樹的遞歸函數(shù)
  void Clear(BTreeNode<T> *&BT);
//析構(gòu)函數(shù),清除二叉樹
  ~BinaryTree();
};
//二叉樹類的實(shí)現(xiàn)btree2.cpp
//根據(jù)字符數(shù)組a的二叉樹廣義表建立對(duì)應(yīng)的二叉樹存儲(chǔ)結(jié)構(gòu)
template<class T>
void BinaryTree<T>::CreateBTree(char *a)
{BTreeNode<T> *s[80];//s數(shù)組作為存儲(chǔ)二叉樹中根結(jié)點(diǎn)指針的棧
 int top=-1;      //top作為s棧的棧頂指針
 root=NULL;       //給樹根指針置空
 BTreeNode<T> *p=NULL;//定義p為指向二叉樹結(jié)點(diǎn)的指針
 //用k作為處理結(jié)點(diǎn)的左子樹和右子樹的標(biāo)記,k=1處理左子樹,k=2處理右子樹
 int k;
 istrstream ins(a);//把字符串a(chǎn)定義為輸入字符串流對(duì)象ins
 char ch;
 ins>>ch;//從ins流對(duì)象順序讀入一個(gè)字符,
 while (ch!='@')
 {//每循環(huán)一次處理一個(gè)讀入的字符,直到掃描到'@'字符為止
  switch(ch)
    {case '(':top++;s[top]=p;k=1;break;
     case ')':top--;break;
     case ',':top++;k=2;break;
     default:p=new BTreeNode<T>;
       p->data=ch;p->left=p->right=NULL;
       cout<<setw(2)<<p->data;
       if(root==NULL) root=p;
       else {
	if(k==1) s[top]->left=p;
        else s[top]->right=p;}
    }
  ins>>ch;
 }
}
//按任一種遍歷次序輸出二叉樹中的所有結(jié)點(diǎn)
template<class T>
void BinaryTree<T>::TraverseBTree(int mark)
{Traverse(root,mark);}

//用于遍歷的遞歸函數(shù)
template<class T>
void BinaryTree<T>::Traverse(BTreeNode<T> *&BT,int mark)
{if(mark==1){ //先序遍歷
  if(BT!=NULL)
   {cout<<BT->data<<' ';
    Traverse(BT->left,mark);
    Traverse(BT->right,mark);
   }}
 else
  if(mark==2)//中序遍歷
   {if(BT!=NULL)
     {Traverse(BT->left,mark);
      cout<<BT->data<<' ';
      Traverse(BT->right,mark);
    }}
  else
   if(mark==3) {//后序遍歷
     if(BT!=NULL) {
      Traverse(BT->left,mark);
      Traverse(BT->right,mark);
      cout<<BT->data<<' ';
    }}
  else
   if(mark==4) //按層遍歷
    {const MaxLength=80;
     BTreeNode<T> *Q[MaxLength];
    //定義存儲(chǔ)二叉樹結(jié)點(diǎn)指針的數(shù)組空間作為隊(duì)列使用
     int front=0, rear=0;
    //定義隊(duì)首指針和隊(duì)尾指針,初始均置0表示空隊(duì)
    BTreeNode<T> *p;
    if(BT!=NULL) {
     rear=(rear+1)%MaxLength;  //后移隊(duì)尾指針
     Q[rear]=BT;}              //將樹根結(jié)點(diǎn)指針進(jìn)隊(duì)
    while(front!=rear)
     {//當(dāng)隊(duì)列非空時(shí)執(zhí)行循環(huán)
      front=(front+1)%MaxLength;
      //后移隊(duì)首指針
      p=Q[front];
      //刪除隊(duì)首結(jié)點(diǎn)
      cout<<p->data<<' ';
      //輸出隊(duì)首結(jié)點(diǎn)的值
      if(p->left!=NULL)
       {//若結(jié)點(diǎn)存在左孩子,則左孩子結(jié)點(diǎn)指針進(jìn)隊(duì)
	rear=(rear+1)%MaxLength;
        Q[rear]=p->left;
       }
      if(p->right!=NULL)
       {//若結(jié)點(diǎn)存在右孩子,則右孩子結(jié)點(diǎn)指針進(jìn)隊(duì)
	rear=(rear+1)%MaxLength;
	Q[rear]=p->right;
       }
      }
     }
   else
    {cerr<<"mark的值無(wú)效!遍歷失敗!"<<endl;exit(1);
}}
//求二叉樹的深度
template<class T>
int BinaryTree<T>::BTreeDepth()
{return Depth(root);}

//用于求二叉樹深度的遞歸函數(shù)
template<class T>
int BinaryTree<T>::Depth(BTreeNode<T> *&BT)
{if(BT==NULL) return 0;//對(duì)于空樹,返回0并結(jié)束遞歸
 else
   {//計(jì)算左子樹的深度
    int dep1=Depth(BT->left);
    //計(jì)算右子樹的深度
    int dep2=Depth(BT->right);
    //返回樹的深度
    if(dep1>dep2) return dep1+1;
    else return dep2+1;
   }
}
//求二叉樹中所有結(jié)點(diǎn)數(shù)
template<class T>
int BinaryTree<T>::BTreeCount()
{return Count(root);}

//用于求二叉樹中所有結(jié)點(diǎn)數(shù)的遞歸函數(shù)
template<class T>
int BinaryTree<T>::Count(BTreeNode<T> *&BT)
{if(BT==NULL) return 0;
 else
  return Count(BT->left)+Count(BT->right)+1;
}
//求二叉樹中所有葉子結(jié)點(diǎn)數(shù)
template<class T>
int BinaryTree<T>::BTreeLeafCount()
{return LeafCount(root);}

//用于求二叉樹中所有葉子結(jié)點(diǎn)數(shù)的遞歸函數(shù)
template<class T>
int BinaryTree<T>::LeafCount(BTreeNode<T> *&BT)
{if(BT==NULL) return 0;
 else if(BT->left==NULL && BT->right==NULL) return 1;
  else return LeafCount(BT->left)+LeafCount(BT->right);
}
//按照二叉樹的廣義表表示輸出整個(gè)二叉樹
template<class T>
void BinaryTree<T>::PrintBTree()
{Print(root);}

//用于輸出整個(gè)二叉樹的遞歸函數(shù)
template<class T>
void BinaryTree<T>::Print(BTreeNode<T> *&BT)
{if(BT==NULL) return;//樹為空時(shí)返回
 else {//否則執(zhí)行如下操作
  cout<<BT->data;//輸出根結(jié)點(diǎn)的值
  if(BT->left!=NULL || BT->right!=NULL)
   {cout<<'(';  //輸出左括號(hào)
    Print(BT->left);//輸出左子樹
    if(BT->right!=NULL)
     cout<<',';//若右子樹不為空則輸出逗號(hào)分隔符
    Print(BT->right);//輸出右子樹
    cout<<')';} //輸出右括號(hào)
}}
//析構(gòu)函數(shù),清除二叉樹
template<class T>
BinaryTree<T>::~BinaryTree()
{Clear(root);}
//用于清除二叉樹的遞歸函數(shù)
template<class T>
void BinaryTree<T>::Clear(BTreeNode<T> *&BT)
{if(BT!=NULL)
   { //當(dāng)二叉樹非空時(shí)進(jìn)行如下操作
    Clear(BT->left); //刪除左子樹
    Clear(BT->right);//刪除右子樹
    delete BT;       //刪除根結(jié)點(diǎn)
    BT=NULL;}        //置根指針為空
}
//二叉樹類相關(guān)操作的測(cè)試btree2M.cpp
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<strstrea.h>
#include "btree2.h"
#include "btree2.cpp"

void main()
{cout<<"btree2M.cpp運(yùn)行結(jié)果:\n";
 int n;
 char b[80]="(a)(b),c(d),e(f),g(h),i(j),k(l),m(n),o@";
 BinaryTree<char> B;
 cout<<"創(chuàng)建的二叉樹為:\n";
 B.CreateBTree(b);cout<<endl;
 if(!B.BTreeEmpty())
   cout<<"二叉樹非空!\n";
 else
   cout<<"二叉樹為空!\n";
 cout<<"先序遍歷二叉樹:\n";
 B.TraverseBTree(1);cout<<endl;
 cout<<"中序遍歷二叉樹:\n";
 B.TraverseBTree(2);cout<<endl;
 cout<<"后序遍歷二叉樹:\n";
 B.TraverseBTree(3);cout<<endl;
 cout<<"按層遍歷二叉樹:\n";
 B.TraverseBTree(4);cout<<endl;
 n=B.BTreeDepth();
 cout<<"二叉樹的深度="<<n<<endl;
 n=B.BTreeCount();
 cout<<"二叉樹的所有結(jié)點(diǎn)數(shù)="<<n<<endl;
 n=B.BTreeLeafCount();
 cout<<"二叉樹的所有葉子結(jié)點(diǎn)數(shù)="<<n<<endl;
 cout<<"按二叉樹的廣義表輸出:\n";
 B.PrintBTree();cout<<endl;
 cin.get();}
btree2M.cpp運(yùn)行結(jié)果:
創(chuàng)建的二叉樹為:
 a b c d e f g h i j k l m n o
二叉樹非空!
先序遍歷二叉樹:
a b c d e f g h i j k l m n o 
中序遍歷二叉樹:
b a d c f e h g j i l k n m o 
后序遍歷二叉樹:
b d f h j l n o m k i g e c a 
按層遍歷二叉樹:
a b c d e f g h i j k l m n o 
二叉樹的深度=8
二叉樹的所有結(jié)點(diǎn)數(shù)=15
二叉樹的所有葉子結(jié)點(diǎn)數(shù)=8
按二叉樹的廣義表輸出:
a(b,c(d,e(f,g(h,i(j,k(l,m(n,o)))))))

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利影院| 制服丝袜国产精品| 国产精品亲子伦对白| 国产夫妻精品视频| 亚洲国产成人午夜在线一区| 成人深夜福利app| 亚洲美女视频在线| 欧美日韩国产影片| 韩国午夜理伦三级不卡影院| 中文字幕高清不卡| 91高清视频免费看| 日本美女一区二区三区| 久久综合久久鬼色中文字| 盗摄精品av一区二区三区| 国产精品久久久久7777按摩 | 99久久国产综合精品麻豆| 一区二区三区在线影院| 欧美顶级少妇做爰| 国产在线日韩欧美| 亚洲欧美视频在线观看| 欧美一级在线视频| proumb性欧美在线观看| 亚洲成人av一区二区三区| 精品国内片67194| 一本在线高清不卡dvd| 日本伊人午夜精品| 国产精品黄色在线观看| 在线不卡一区二区| 成人黄页毛片网站| 热久久一区二区| 一区二区中文字幕在线| 91精品国产一区二区三区香蕉| 国产高清久久久久| 午夜欧美电影在线观看| 国产亚洲欧美在线| 欧美精品丝袜久久久中文字幕| 国产精品中文字幕日韩精品| 亚洲已满18点击进入久久| 国产亚洲人成网站| 欧美日韩成人综合天天影院| 成人精品一区二区三区四区| 奇米色一区二区| 最新中文字幕一区二区三区 | 久久青草欧美一区二区三区| 欧美在线色视频| 国产成人精品免费网站| 偷拍亚洲欧洲综合| 中文字幕一区在线观看| 久久老女人爱爱| 日韩一区二区免费视频| 欧美性受xxxx| 一本一道综合狠狠老| 国产激情精品久久久第一区二区 | 日韩精品一区二区三区视频播放| 99精品视频在线观看| 国产原创一区二区| 美日韩一区二区| 日本伊人色综合网| 亚洲国产日韩一区二区| 亚洲精品国久久99热| 国产精品妹子av| 国产亚洲va综合人人澡精品 | 久久不见久久见免费视频7| 亚洲综合视频网| 亚洲精品视频在线观看网站| 国产精品久久久久久久午夜片| www日韩大片| 久久人人97超碰com| 2020国产精品自拍| 精品国产一二三| 久久蜜臀中文字幕| 精品1区2区在线观看| 精品精品欲导航| 欧美成人猛片aaaaaaa| 欧美大白屁股肥臀xxxxxx| 欧美一区二区三区免费| 欧美精品777| 日韩一级片网址| 日韩视频免费观看高清完整版| 日韩欧美黄色影院| 精品999在线播放| 久久九九国产精品| 国产精品麻豆99久久久久久| 国产精品卡一卡二卡三| 亚洲三级视频在线观看| 一级女性全黄久久生活片免费| 亚洲综合色自拍一区| 日韩制服丝袜先锋影音| 蜜桃一区二区三区在线| 国产剧情一区二区| av一区二区三区在线| 日本道免费精品一区二区三区| 欧美亚洲一区二区在线| 欧美精品久久99久久在免费线| 欧美电影免费观看高清完整版在线| 日韩欧美一二三四区| 久久精品欧美日韩精品| 中文成人综合网| 亚洲一区欧美一区| 麻豆精品视频在线观看| 成人在线视频首页| 在线观看成人小视频| 欧美一区二区三区思思人| 久久精品这里都是精品| 一区二区三区国产| 久久机这里只有精品| www.亚洲人| 欧美精品久久久久久久久老牛影院| 26uuu久久天堂性欧美| 国产精品久久三| 丝袜美腿成人在线| 懂色av中文一区二区三区| 欧美中文字幕亚洲一区二区va在线| 91精品在线观看入口| 国产欧美精品一区二区三区四区| 亚洲男人的天堂av| 韩国女主播成人在线| 91久久久免费一区二区| 2020国产精品| 五月天激情小说综合| 国产成人av一区| 91精品国产综合久久精品| 日本一区二区动态图| 日韩精品乱码免费| 91视频国产观看| 久久亚洲二区三区| 亚洲一区二区三区爽爽爽爽爽| 黑人精品欧美一区二区蜜桃| 欧美性大战久久久久久久| 久久影院视频免费| 图片区小说区区亚洲影院| 99国产精品国产精品毛片| 精品国偷自产国产一区| 亚洲福利一区二区三区| 99久久伊人精品| 久久久一区二区三区| 日本免费在线视频不卡一不卡二| 色综合婷婷久久| 国产午夜精品一区二区三区嫩草| 首页亚洲欧美制服丝腿| 一本久道中文字幕精品亚洲嫩| 精品国产三级a在线观看| 首页综合国产亚洲丝袜| 91久久一区二区| 自拍偷拍亚洲欧美日韩| 国产成人午夜高潮毛片| 日韩一区二区三| 日韩在线一区二区三区| 欧美三电影在线| 亚洲精品一二三| 99久久伊人精品| 国产性色一区二区| 国产露脸91国语对白| 精品国产一区二区三区久久久蜜月 | 一区精品在线播放| 成人黄色电影在线 | 亚洲精品久久久久久国产精华液| 成人av先锋影音| 欧美国产激情二区三区| 成人开心网精品视频| 久久久精品欧美丰满| 国产精品一区二区不卡| 久久久久久久电影| 国产精品一级在线| 欧美国产精品一区二区| 风流少妇一区二区| 欧美经典一区二区三区| 国产成人午夜高潮毛片| 中文av一区二区| 91丨porny丨国产| 亚洲免费资源在线播放| 在线观看免费视频综合| 婷婷开心久久网| 日韩一级欧美一级| 激情综合网天天干| 久久久噜噜噜久久中文字幕色伊伊 | 欧美四级电影在线观看| 天天综合天天综合色| 欧美男生操女生| 久久国内精品视频| 久久天天做天天爱综合色| 国产精品资源在线观看| 国产精品美女久久久久久2018| 91蜜桃网址入口| 亚洲午夜久久久久久久久久久| 欧美精选一区二区| 精品无码三级在线观看视频| 久久精品视频在线看| 成人动漫av在线| 亚洲综合一二三区| 欧美一级二级在线观看| 国产精品1区2区3区在线观看| 中文字幕中文字幕一区二区| 在线观看日韩国产| 精品亚洲成a人在线观看| 国产精品美女久久久久久久网站| 欧美自拍偷拍午夜视频| 久久电影国产免费久久电影| 中文av字幕一区| 777色狠狠一区二区三区|