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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? btreem.txt

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

//用于遍歷的遞歸函數
template<class T>
void BTree<T>::Traverse(BTree<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;
     BTree<T> *Q[MaxLength];
    //定義存儲二叉樹結點指針的數組空間作為隊列使用
     int front=0, rear=0;
    //定義隊首指針和隊尾指針,初始均置0表示空隊
    BTree<T> *p;
    if(BT!=NULL) {
     rear=(rear+1)%MaxLength;  //后移隊尾指針
     Q[rear]=BT;}              //將樹根結點指針進隊
    while(front!=rear)
     {//當隊列非空時執行循環
      front=(front+1)%MaxLength;
      //后移隊首指針
      p=Q[front];
      //刪除隊首結點
      cout<<p->data<<' ';
      //輸出隊首結點的值
      if(p->left!=NULL)
       {//若結點存在左孩子,則左孩子結點指針進隊
	rear=(rear+1)%MaxLength;
        Q[rear]=p->left;
       }
      if(p->right!=NULL)
       {//若結點存在右孩子,則右孩子結點指針進隊
	rear=(rear+1)%MaxLength;
	Q[rear]=p->right;
       }
      }
     }
   else
    {cerr<<"mark的值無效!遍歷失敗!"<<endl;exit(1);
}}
//求二叉樹的深度
template<class T>
int BTree<T>::BTreeDepth()
{return Depth(left);}

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

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

//用于求二叉樹中所有葉子結點數的遞歸函數
template<class T>
int BTree<T>::LeafCount(BTree<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);
}
//按照二叉樹的廣義表表示輸出整個二叉樹
template<class T>
void BTree<T>::PrintBTree()
{Print(left);}

//用于輸出整個二叉樹的遞歸函數
template<class T>
void BTree<T>::Print(BTree<T> *&BT)
{if(BT==NULL) return;//樹為空時返回
 else {//否則執行如下操作
  cout<<BT->data;//輸出根結點的值
  if(BT->left!=NULL || BT->right!=NULL)
   {cout<<'(';  //輸出左括號
    Print(BT->left);//輸出左子樹
    if(BT->right!=NULL)
     cout<<',';//若右子樹不為空則輸出逗號分隔符
    Print(BT->right);//輸出右子樹
    cout<<')';} //輸出右括號
}}
//析構函數,清除二叉樹
template<class T>
BTree<T>::~BTree()
{Clear(left);}
//用于清除二叉樹的遞歸函數
template<class T>
void BTree<T>::Clear(BTree<T> *&BT)
{if(BT!=NULL)
   { //當二叉樹非空時進行如下操作
    Clear(BT->left); //刪除左子樹
    Clear(BT->right);//刪除右子樹
    delete BT;       //刪除根結點
    BT=NULL;}        //置根指針為空
}
//二叉樹類相關操作的測試btreeM.cpp
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<strstrea.h>
#include "btree.h"
#include "btree.cpp"
void main()
{cout<<"btreeM.cpp運行結果:\n";
 int n;
 char b[80]="(a)(b),c(d),e(f),g(h),i(j),k(l),m(n),o@";
 BTree<char> B;
 cout<<"創建的二叉樹為:\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<<"二叉樹的所有結點數="<<n<<endl;
 n=B.BTreeLeafCount();
 cout<<"二叉樹的所有葉子結點數="<<n<<endl;
 cout<<"按二叉樹的廣義表輸出:\n";
 B.PrintBTree();cout<<endl;
 cin.get();}
btreeM.cpp運行結果:
創建的二叉樹為:
 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
二叉樹的所有結點數=15
二叉樹的所有葉子結點數=8
按二叉樹的廣義表輸出:
a(b,c(d,e(f,g(h,i(j,k(l,m(n,o)))))))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲mv大片欧洲mv大片精品| 亚洲激情图片qvod| 国产精品久久三区| 午夜精品视频在线观看| 国产69精品久久777的优势| 色噜噜偷拍精品综合在线| 欧美电影免费观看完整版| 亚洲女女做受ⅹxx高潮| 国产精品一品视频| 91精品国产入口| 亚洲欧洲中文日韩久久av乱码| 麻豆精品国产传媒mv男同| 欧美综合久久久| 国产精品乱人伦中文| 老司机免费视频一区二区| 色素色在线综合| 中文字幕亚洲欧美在线不卡| 狠狠色丁香久久婷婷综合丁香| 91久久精品网| 亚洲欧洲精品一区二区三区 | 91精品视频网| 亚洲欧美国产三级| 波多野结衣在线一区| 久久精品综合网| 国内精品久久久久影院色| 日韩一区二区三区电影在线观看 | 91精品国产一区二区三区香蕉| 亚洲欧洲国产日韩| 成人国产亚洲欧美成人综合网| 久久这里只有精品6| 精品无人码麻豆乱码1区2区 | 成人性生交大片免费看中文| 久久网站热最新地址| 久久精品国产77777蜜臀| 欧美久久婷婷综合色| 视频一区二区欧美| 欧美一区二区视频免费观看| 亚洲国产精品一区二区www在线| 在线视频你懂得一区| 亚洲欧洲日产国产综合网| 91视频观看视频| 一区二区三区欧美亚洲| 欧美三级电影网站| 日韩电影在线观看电影| 精品国产在天天线2019| 国产精品99久久久久久久女警| 久久久久久久性| 成人小视频免费在线观看| 综合久久国产九一剧情麻豆| 日本高清无吗v一区| 亚洲国产成人va在线观看天堂| 欧美久久久久免费| 久久99国产精品久久99果冻传媒| 久久夜色精品一区| www.亚洲精品| 五月天视频一区| 久久精品亚洲精品国产欧美| 成人avav在线| 亚洲一区二区精品视频| 日韩一级免费观看| 国产91综合网| 亚洲国产成人va在线观看天堂| 91成人免费在线| 免费成人av在线| 亚洲欧美日韩久久| 日韩一卡二卡三卡四卡| 成人一道本在线| 天天色天天操综合| 欧美国产精品劲爆| 欧美三片在线视频观看| 国产乱人伦偷精品视频免下载 | www.色综合.com| 视频一区欧美精品| 中文字幕精品一区二区精品绿巨人| 99视频在线观看一区三区| 午夜精彩视频在线观看不卡| 久久精品免费在线观看| 欧美日韩在线电影| 精品一区二区免费看| 一区二区三区高清不卡| 久久女同精品一区二区| 欧美中文字幕久久| 国产成人精品免费看| 亚洲成人一区在线| 国产精品丝袜久久久久久app| 欧美亚洲一区二区在线观看| 国产揄拍国内精品对白| 午夜精品久久久久久久久久久 | 国产精品99精品久久免费| 一区二区三区中文字幕| 777xxx欧美| 色综合 综合色| 国产精品2024| 美女视频黄a大片欧美| 亚洲大型综合色站| 亚洲人精品午夜| 中文字幕国产精品一区二区| 日韩欧美亚洲一区二区| 欧美精品aⅴ在线视频| 色综合久久中文综合久久97| 日本在线播放一区二区三区| 一区二区三区欧美亚洲| 国产精品久久久久久久久免费桃花| 日韩欧美第一区| 91精品欧美综合在线观看最新| 99精品国产91久久久久久 | 国产精品视频看| 国产亚洲成年网址在线观看| 欧美成人精品二区三区99精品| 欧美婷婷六月丁香综合色| 色婷婷亚洲一区二区三区| 91亚洲永久精品| 91蜜桃在线免费视频| 成人av在线播放网址| 不卡一区二区中文字幕| 成人的网站免费观看| 成人免费av网站| 成人午夜免费电影| 成年人网站91| 色婷婷久久久久swag精品| 91在线你懂得| 欧美视频一区二区| 欧美日韩国产片| 日韩精品在线一区| 久久久影院官网| 国产精品女主播在线观看| 国产精品每日更新在线播放网址 | 综合久久给合久久狠狠狠97色| 综合久久久久久久| 亚洲制服丝袜在线| 日韩高清一级片| 国产在线一区二区综合免费视频| 国产很黄免费观看久久| 99精品久久久久久| 欧日韩精品视频| 日韩欧美精品三级| 欧美激情一区二区三区蜜桃视频| 中文字幕欧美日本乱码一线二线| 中文字幕中文字幕中文字幕亚洲无线| 国产精品久久久久久久久免费桃花 | 欧美韩国日本不卡| 一区二区三区在线影院| 偷偷要91色婷婷| 国产精品一区免费视频| 91丨九色porny丨蝌蚪| 欧美精品三级日韩久久| 久久亚洲捆绑美女| 亚洲精品五月天| 久久99热99| 色偷偷88欧美精品久久久| 欧美三级日韩在线| 国产嫩草影院久久久久| 亚洲第一电影网| 国产.欧美.日韩| 91精品国产综合久久久久| 欧美国产日韩亚洲一区| 亚洲一区二区三区在线看| 激情六月婷婷综合| 在线欧美日韩国产| 久久精品亚洲精品国产欧美| 一区二区三区四区蜜桃| 国产一区视频在线看| 欧美视频一区二区| 亚洲精品久久久蜜桃| 日本伊人午夜精品| 91免费小视频| 久久久国产精品麻豆| 香蕉影视欧美成人| 91色婷婷久久久久合中文| 精品黑人一区二区三区久久| 一区二区欧美精品| 播五月开心婷婷综合| www国产亚洲精品久久麻豆| 亚洲一区在线电影| av网站免费线看精品| 精品美女一区二区| 三级欧美韩日大片在线看| 色悠悠久久综合| 国产精品美女久久久久久久| 秋霞电影一区二区| 欧美日本乱大交xxxxx| 亚洲欧美一区二区三区久本道91| 国产精品一品二品| 精品国产一区二区三区久久久蜜月 | yourporn久久国产精品| 26uuu久久天堂性欧美| 日韩精彩视频在线观看| 欧美综合在线视频| 亚洲精品美腿丝袜| 色伊人久久综合中文字幕| 国产精品三级av| 国产不卡高清在线观看视频| 久久婷婷成人综合色| 久久国产精品色婷婷| 91精品国产高清一区二区三区| 亚欧色一区w666天堂| 精品视频一区二区不卡| 亚洲高清不卡在线| 欧美日韩国产不卡| 日本美女一区二区|