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

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

?? p170.cpp

?? 清華大學-數據結構(課件+習題+課后答案)
?? 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> *);
  protected:
    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;}
  protected:
    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;
      out<<'(';
      Traverse(current->leftChild,out);
      out<<',';
      Traverse(current->rightChild,out);
      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一区二区三区免费野_久草精品视频
成人网男人的天堂| 欧美xxxx老人做受| 精品国产1区二区| 亚洲啪啪综合av一区二区三区| 午夜精品免费在线| 成人avav在线| 欧美一卡二卡在线| 亚洲一线二线三线视频| 国产99久久久国产精品潘金| 欧美一区二区三区精品| 亚洲品质自拍视频| 成人免费高清在线| 26uuu色噜噜精品一区| 午夜伦理一区二区| 欧美无砖砖区免费| 亚洲制服丝袜av| 91亚洲精品乱码久久久久久蜜桃| 2020国产精品| 老鸭窝一区二区久久精品| 欧美日韩中文字幕一区| 亚洲欧美日韩精品久久久久| 国产不卡在线播放| 久久免费视频一区| 99精品一区二区| 国产欧美一区二区精品仙草咪| 免费成人在线网站| 日韩一区国产二区欧美三区| 亚洲成人动漫精品| 欧美日韩亚洲综合一区二区三区| 亚洲精品国产一区二区三区四区在线| 国产成人亚洲精品青草天美| 久久午夜电影网| 国产精品18久久久久久久久| 久久美女高清视频| 寂寞少妇一区二区三区| 亚洲精品一区二区精华| 国产乱码精品一区二区三区忘忧草| 精品国产免费人成在线观看| 国产精品自拍毛片| 日本一区二区三区国色天香| 成人免费毛片aaaaa**| 国产精品高潮久久久久无| av一区二区三区| 亚洲柠檬福利资源导航| 一本一本久久a久久精品综合麻豆| 中文字幕制服丝袜一区二区三区 | 一区二区三区在线视频观看 | 成人成人成人在线视频| 国产免费久久精品| 成人av在线播放网站| 亚洲人成精品久久久久| 欧美吻胸吃奶大尺度电影| 婷婷国产在线综合| 精品久久久久久久久久久久包黑料 | 风间由美一区二区三区在线观看 | 亚洲精品成a人| 欧美日韩国产经典色站一区二区三区| 午夜日韩在线电影| 精品国产一区二区三区不卡 | 国产精品久线观看视频| 日本韩国视频一区二区| 蜜桃av一区二区在线观看| 国产蜜臀97一区二区三区| 在线观看91视频| 国产真实乱偷精品视频免| 1024成人网| 日韩视频在线你懂得| 成人午夜视频在线| 天堂资源在线中文精品| 欧美国产综合色视频| 欧美影片第一页| 狠狠狠色丁香婷婷综合激情| 亚洲乱码中文字幕综合| 日韩欧美国产一区二区三区| 91片黄在线观看| 久久99在线观看| 一区二区三区中文在线| 精品国产1区2区3区| 国产成人av一区二区| 亚洲素人一区二区| 欧美日韩免费一区二区三区 | 在线综合亚洲欧美在线视频| 国产激情一区二区三区| 国产精品成人一区二区艾草| 精品视频一区三区九区| 国产福利电影一区二区三区| 亚洲免费观看在线观看| 在线观看欧美日本| 成人免费精品视频| 偷拍一区二区三区四区| 中文乱码免费一区二区| 8x8x8国产精品| 成人综合在线观看| 日韩精品乱码免费| 亚洲欧洲国产日韩| 日韩欧美国产综合| 色综合网色综合| 国内精品写真在线观看| 亚洲高清在线视频| 国产精品久久久一区麻豆最新章节| 欧美乱妇23p| 91国模大尺度私拍在线视频| 国产高清久久久| 日韩电影在线免费观看| 亚洲欧洲日本在线| 日韩美一区二区三区| 91精品国产91热久久久做人人| 9i看片成人免费高清| 国内精品伊人久久久久av一坑 | 日韩欧美一二区| 色婷婷av一区二区三区大白胸 | 欧美精品久久一区| 色狠狠av一区二区三区| 盗摄精品av一区二区三区| 免费的国产精品| 亚洲va在线va天堂| 亚洲第一会所有码转帖| 亚洲婷婷在线视频| 欧美高清一级片在线观看| xvideos.蜜桃一区二区| 日韩欧美一二区| 91精品婷婷国产综合久久 | 加勒比av一区二区| 蜜臀av一区二区在线免费观看| 亚洲va韩国va欧美va精品| 亚洲最新在线观看| 天使萌一区二区三区免费观看| 亚洲精品水蜜桃| 亚洲免费观看视频| 亚洲日本一区二区三区| 亚洲人成网站在线| 亚洲欧美日韩国产另类专区| 久久女同性恋中文字幕| 欧美国产精品专区| 国产日韩欧美精品电影三级在线 | 香蕉加勒比综合久久| 亚洲国产视频网站| 亚洲国产精品一区二区久久恐怖片| 亚洲夂夂婷婷色拍ww47| 亚洲一区av在线| 婷婷久久综合九色综合绿巨人| 一区二区国产盗摄色噜噜| 日韩精品亚洲专区| 激情国产一区二区 | 亚州成人在线电影| 亚洲综合色成人| 九九视频精品免费| 国产精品18久久久久久vr| 成人性生交大合| 成人免费看片app下载| a4yy欧美一区二区三区| 欧美主播一区二区三区| 欧美一区二区在线看| 欧美成人aa大片| 国产欧美精品一区二区色综合| 亚洲国产精品99久久久久久久久 | 欧美日韩精品一区二区三区蜜桃| 欧美日韩国产在线播放网站| 日韩丝袜美女视频| 日韩毛片精品高清免费| 石原莉奈一区二区三区在线观看| 美女免费视频一区二区| 国产黄人亚洲片| 色av成人天堂桃色av| 欧美一区二视频| 欧美疯狂性受xxxxx喷水图片| 欧美激情在线看| 亚洲综合久久av| 另类人妖一区二区av| 国产精品亚洲成人| 欧美做爰猛烈大尺度电影无法无天| 91.xcao| 国产片一区二区| 亚洲成av人片一区二区| 国产综合久久久久影院| 制服视频三区第一页精品| 日本一区二区视频在线观看| 亚洲国产一区二区a毛片| 国产精品小仙女| 欧美日韩一二三区| 欧美国产一区在线| 经典三级视频一区| 欧美亚洲尤物久久| 亚洲国产经典视频| 麻豆视频一区二区| av在线不卡电影| 国产精品素人一区二区| 美洲天堂一区二卡三卡四卡视频| eeuss鲁一区二区三区| 欧美本精品男人aⅴ天堂| 一区二区三区丝袜| 国产成人亚洲综合色影视| 51精品视频一区二区三区| 国产精品国产自产拍在线| 国产乱人伦精品一区二区在线观看 | 中文字幕不卡在线播放| 精品综合久久久久久8888| 欧美性视频一区二区三区| 国产精品剧情在线亚洲| 国产精品66部|