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

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

?? page170.cpp

?? 殷人昆 數據結構 一些書中的源代碼 系某師兄所做 c++版
?? CPP
字號:
#define NULL 0
#define Max(x1,x2)  (x1>x2?x1:x2)
#include <iostream.h>

template <class Type> class BinaryTree;

template <class Type> class BinTreeNode{
  friend class BinaryTree<Type>;
  public:
    BinTreeNode():leftChild(NULL),rightChild(NULL){}
    BinTreeNode(Type item,BinTreeNode<Type> * left=NULL,BinTreeNode<Type> * right=NULL):data(item),leftChild(left),rightChild(right){}
    Type GetData() const {return data;}
    BinTreeNode<Type> * GetLeft() const {return leftChild;}
    BinTreeNode<Type> * GetRight() const {return rightChild;}
    void SetData(const Type & item){data=item;}
    void SetLeft(BinTreeNode<Type> * L){leftChild=L;}
    void SetRight(BinTreeNode<Type> * R){rightChild=R;}
    Type & GetData(){return data;}
    friend int equal(BinTreeNode<Type> *,BinTreeNode<Type> *);
  private:
    BinTreeNode<Type> * leftChild,* rightChild;
    Type data;
    };


template <class Type> class BinaryTree{
  public:
    void InOrder();
    void PreOrder();
    void PostOrder();
    int Depth(const BinTreeNode<Type> *) const;
    int Size(const BinTreeNode<Type> *)const;
    BinaryTree():root(NULL){}
    BinaryTree(Type value):RefValue(value),root(NULL){}
    BinaryTree(const BinaryTree<Type> &);
    virtual ~BinaryTree(){destroy(root);}
    virtual int IsEmpty(){return root==NULL;}
    virtual BinTreeNode<Type> * Parent(BinTreeNode<Type> * current){
      return root==NULL||root==current?NULL:Parent(root,current);
      }
    virtual BinTreeNode<Type> * LeftChild(BinTreeNode<Type> * current){
      return root!=NULL?current->leftChild:NULL;
      }
    virtual BinTreeNode<Type> * RightChild(BinTreeNode<Type> * current){
      return root!=NULL?current->rightChild:NULL;
      }
    virtual int Insert(const Type & item){ return Insert(root,item);}
    virtual int Find(const Type & item) const { return Find(root,item);}
    const BinTreeNode<Type> * GetRoot() const {return root;}
    friend istream & operator >> (istream & in,BinaryTree<Type> & Tree);
    friend ostream & operator << (ostream & out,BinaryTree<Type> & Tree);
    friend int operator == (const BinaryTree<Type> &,const BinaryTree<Type> &);
    BinTreeNode<Type> * GetRoot() {return root;}
  private:
    BinTreeNode<Type> * root;
    Type RefValue;
    BinTreeNode<Type> * Parent(BinTreeNode<Type> * start,BinTreeNode<Type> * current);
    int Insert(BinTreeNode<Type> * current,const Type & item);
    void Traverse(BinTreeNode<Type> * current,ostream & out) const;
    int Find(BinTreeNode<Type> * current,const Type & item) const;
    void destroy(BinTreeNode<Type> * current);
    void InOrder(BinTreeNode<Type> *);
    void PreOrder(BinTreeNode<Type> *);
    void PostOrder(BinTreeNode<Type> *);
    BinTreeNode<Type> * Copy(BinTreeNode<Type> *);
    };


  template <class Type> void BinaryTree<Type>::destroy(BinTreeNode<Type> * current){
    if(current!=NULL){
      destroy(current->leftChild);
      destroy(current->rightChild);
      delete current;
      }
    }

  template <class Type> BinTreeNode<Type> * BinaryTree<Type>::Parent(BinTreeNode<Type> * start,
	    BinTreeNode<Type> * current){
    if(start==NULL) return NULL;
    if(start->leftChild==current||start->rightChild==current) return start;
    BinTreeNode<Type> * p;
    if((p=Parent(start->leftChild,current))!=NULL) return p;
      else return Parent(start->rightChild,current);
    }

  template <class Type> void BinaryTree<Type>::Traverse(BinTreeNode<Type> * current,
	      ostream & out) const{
    if(current!=NULL){
      out<<current->data<<' ';
      Traverse(current->leftChild,out);
      Traverse(current->rightChild,out);
      }
   if(root==NULL) cout<<"The root is null."<<endl;
    }

  template <class Type> istream & operator >>(istream & in,BinaryTree<Type> & Tree){
    Type item,ref;
    cout<<"Construct binary tree:\n"<<"First,input the refvalue:";
    cin>>Tree.RefValue;
    cout<<"Input data (end with "<<Tree.RefValue<<"):";
    in>>item;
    while(item!=Tree.RefValue){
      Tree.Insert(item);
      cout<<"Input data (end with "<<Tree.RefValue<<"):";
      in>>item;
      }
    return in;
    }

  template <class Type> ostream & operator << (ostream & out,BinaryTree<Type> & Tree){
    out<<"Preorder traversal of bianry tree.\n";
    Tree.Traverse(Tree.root,out);
    out<<endl;
    return out;
    }

  template <class Type> void BinaryTree<Type>::InOrder(){
    InOrder(root);
    }

  template <class Type> void BinaryTree<Type>::InOrder(BinTreeNode<Type> * current){
    if(current!=NULL){
      InOrder(current->leftChild);
      cout<<current->data<<' ';
      InOrder(current->rightChild);
      }
    }

  template <class Type> void BinaryTree<Type>::PreOrder(){
    PreOrder(root);
    }

  template <class Type> void BinaryTree<Type>::PreOrder(BinTreeNode<Type> * current){
    if(current!=NULL){
      cout<<current->data<<' ';
      PreOrder(current->leftChild);
      PreOrder(current->rightChild);
      }
    }


  template <class Type> void BinaryTree<Type>::PostOrder(){
    PostOrder(root);
    }

  template <class Type> void BinaryTree<Type>::PostOrder(BinTreeNode<Type> * current){
    if(current!=NULL){
      PostOrder(current->leftChild);
      PostOrder(current->rightChild);
      cout<<current->data<<' ';
      }
    }

  template <class Type> int BinaryTree<Type>::Size(const BinTreeNode<Type> * t)const{
    if(t==NULL) return 0;
    return 1+Size(t->leftChild)+Size(t->rightChild);
    }

  template <class Type> int BinaryTree<Type>::Depth(const BinTreeNode<Type> * t)const{
    if(t==NULL) return -1;
    return 1+Max(Depth(t->leftChild),Depth(t->rightChild));
    }


  template <class Type> BinaryTree<Type>::BinaryTree(const BinaryTree<Type> & s){
    root=Copy(s.root);
    }

  template <class Type> BinTreeNode<Type> * BinaryTree<Type>::Copy(BinTreeNode<Type> * orignode){
    if(orignode==NULL) return NULL;
    BinTreeNode<Type> * temp=new BinTreeNode<Type>;
    temp->data=orignode->data;
    temp->leftChild=Copy(orignode->leftChild);
    temp->rightChild=Copy(orignode->rightChild);
    return temp;
    }

  template <class Type> int operator ==(const BinaryTree<Type> & s,const BinaryTree<Type> & t){
    return equal(s.root,t.root);
    }

  template <class Type> int equal(BinTreeNode<Type> * a,BinTreeNode<Type> * b){
    if(a==NULL && b==NULL) return 1;
    if(a!=NULL && b!=NULL && a->data==b->data
      && equal(a->leftChild,b->leftChild) && equal(a->rightChild,b->rightChild))
      return 1;
    return 0;
    }

  template<class Type> int BinaryTree<Type>::Find(BinTreeNode<Type>* current,const Type & item) const{
    if(current==NULL) return 0;
    if(current->data==item) return 1;
    return(Find(current->leftChild,item)||Find(current->rightChild,item));
    }

  template<class Type> int BinaryTree<Type>::Insert(BinTreeNode<Type>* current,const Type& item){
    if(current==root&&root==NULL){
       root=new BinTreeNode<Type>(item,NULL,NULL);
       root->data=item;
       return 1;
       }
    if(current==NULL) return 0;
    if(current->leftChild==NULL){
      BinTreeNode<Type>* temp=new BinTreeNode<Type>(item,NULL,NULL);
      current->leftChild=temp;
      return 1;
      }
    if(current->rightChild==NULL){
      BinTreeNode<Type>* temp=new BinTreeNode<Type>(item,NULL,NULL);
      current->rightChild=temp;
      return 1;
      }
    if(Depth(current->leftChild)<=Depth(current->rightChild)) return Insert(current->leftChild,item);
    return Insert(current->rightChild,item);
    }


  void main(){
    BinaryTree<int> bt;
    cin>>bt;
    cout<<bt;
    bt.PreOrder();
    cout<<'\n';
    bt.InOrder();
    cout<<'\n';
    bt.PostOrder();
    cout<<'\n';
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av一区二区| 久久91精品久久久久久秒播| 青青草国产精品97视觉盛宴| 国产高清不卡一区| 欧美亚洲日本一区| 久久久亚洲精品石原莉奈| 亚洲成人激情自拍| 91香蕉国产在线观看软件| 26uuu亚洲| 五月开心婷婷久久| 91久久国产综合久久| 国产清纯白嫩初高生在线观看91| 视频一区二区不卡| 欧美系列日韩一区| 亚洲欧洲www| 国产91色综合久久免费分享| 5566中文字幕一区二区电影 | 日韩国产欧美视频| 91香蕉视频在线| 国产精品视频第一区| 精品一区二区三区免费| 日韩一区二区三| 亚洲福利视频一区| 精品福利视频一区二区三区| 日韩黄色片在线观看| 欧美裸体bbwbbwbbw| 亚洲女人的天堂| 一本久久a久久免费精品不卡| 国产精品国模大尺度视频| 国产精品一区二区在线看| 2021久久国产精品不只是精品| 蜜臀av一区二区| 日韩精品一区二区三区四区视频| 蜜臀va亚洲va欧美va天堂| 日韩午夜在线观看| 精品一二三四在线| 久久精品一区四区| 成人性生交大片免费看中文| 国产精品天美传媒沈樵| kk眼镜猥琐国模调教系列一区二区 | 成人免费观看av| 国产精品青草久久| 一本一本大道香蕉久在线精品 | 韩国成人福利片在线播放| 2022国产精品视频| 成人夜色视频网站在线观看| 国产精品人妖ts系列视频 | 国产传媒欧美日韩成人| 国产欧美日韩亚州综合 | 国产成人在线免费观看| 国产精品久久久久久久久免费相片| av亚洲精华国产精华精华| 亚洲欧美视频在线观看视频| 欧美精品成人一区二区三区四区| 另类小说综合欧美亚洲| 国产清纯美女被跳蛋高潮一区二区久久w| 成人精品视频一区二区三区| 夜色激情一区二区| 欧美一区二区精品在线| 国产成人综合在线| 亚洲制服欧美中文字幕中文字幕| 日韩情涩欧美日韩视频| 成人aaaa免费全部观看| 亚洲成人激情社区| 国产清纯在线一区二区www| 在线亚洲人成电影网站色www| 日本欧美久久久久免费播放网| 久久精品人人爽人人爽| 在线一区二区观看| 国产精品1024| 无吗不卡中文字幕| 国产精品美女视频| 日韩欧美在线1卡| 91蝌蚪国产九色| 精品伊人久久久久7777人| 亚洲欧美日韩国产成人精品影院| 日韩一区二区在线看| 99精品视频中文字幕| 亚洲伊人色欲综合网| 91精品婷婷国产综合久久性色| 国产高清不卡二三区| 日韩黄色免费电影| 亚洲免费在线视频| 日韩和欧美一区二区三区| 中文字幕不卡在线| 精品国产制服丝袜高跟| 在线亚洲+欧美+日本专区| 国产·精品毛片| 激情综合网最新| 五月激情综合婷婷| 亚洲在线视频免费观看| 中文字幕的久久| 精品99一区二区三区| 欧美日韩精品电影| 欧美在线播放高清精品| 不卡一卡二卡三乱码免费网站| 久久99精品一区二区三区三区| 午夜精品久久久久久久蜜桃app| 国产精品不卡在线观看| 久久久久久久久久久久久女国产乱| 正在播放一区二区| 91久久精品国产91性色tv| 国产99一区视频免费| 国产一区二区三区在线观看精品| 全部av―极品视觉盛宴亚洲| 亚洲国产成人va在线观看天堂 | 欧美国产日本韩| 亚洲精品一线二线三线无人区| 欧美一区二区精品在线| 91精品国产乱码| 69精品人人人人| 日韩一区二区麻豆国产| 91精品在线一区二区| 欧美另类videos死尸| 51精品秘密在线观看| 欧美久久高跟鞋激| 欧美一区二视频| 日韩午夜av电影| 久久久久久久综合色一本| 久久午夜国产精品| 国产欧美日韩精品a在线观看| 国产亚洲欧美一级| 最近中文字幕一区二区三区| 亚洲精品少妇30p| 亚洲自拍偷拍图区| 亚洲v中文字幕| 久久99热狠狠色一区二区| 国产美女一区二区三区| 国产精品66部| 91亚洲精品一区二区乱码| 色老汉一区二区三区| 欧美在线观看一二区| 91精品国产麻豆| 国产欧美日韩另类视频免费观看| 综合久久给合久久狠狠狠97色| 亚洲一区在线电影| 久久精品国产亚洲5555| 国产91丝袜在线播放0| 在线视频一区二区免费| 日韩欧美一级片| 欧美高清在线精品一区| 一区av在线播放| 久久av中文字幕片| 91免费精品国自产拍在线不卡 | 天天操天天综合网| 国产一区二区久久| 在线视频观看一区| 日韩欧美国产一区在线观看| 国产精品久久久久久亚洲毛片| 亚洲国产日产av| 国产一区二区精品久久99| www.久久久久久久久| 91精品国产手机| 中文字幕日本不卡| 美女一区二区久久| 9i在线看片成人免费| 欧美一级黄色录像| 亚洲视频网在线直播| 精品一区二区久久久| 91麻豆免费在线观看| 精品入口麻豆88视频| 亚洲精品乱码久久久久久黑人| 日韩精品三区四区| 99久久精品免费精品国产| 日韩欧美中文字幕公布| 亚洲人亚洲人成电影网站色| 久久国产综合精品| 2021中文字幕一区亚洲| 欧美丰满少妇xxxxx高潮对白| 国产午夜精品理论片a级大结局 | 亚洲精品欧美激情| 国产尤物一区二区| 欧美一区二区三区在线观看| 亚洲理论在线观看| 国产精品综合网| 日韩小视频在线观看专区| 亚洲一区二区三区四区在线观看| 国产精品自拍三区| 日韩网站在线看片你懂的| 亚洲国产成人av网| 91久久国产最好的精华液| 国产精品毛片a∨一区二区三区| 久久精品久久久精品美女| 欧美日韩国产片| 亚洲欧美偷拍另类a∨色屁股| 国产成人aaa| 久久精品视频网| 国产在线一区观看| 日韩欧美中文字幕一区| 天天综合网天天综合色| 欧美怡红院视频| 亚洲一区二区三区不卡国产欧美| 3d成人动漫网站| 在线观看91精品国产麻豆| 最新日韩在线视频| 成人免费看视频| 国产精品久久久久婷婷| 大桥未久av一区二区三区中文| 26uuu欧美| 国产不卡视频一区二区三区|