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

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

?? bintree.h

?? 數據結構學過的各種算法及其ppt演示
?? H
字號:
#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);
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久午夜国产精品| 国产精品理伦片| 久久精品亚洲国产奇米99| 亚洲免费观看视频| 精品一区二区三区在线观看 | 亚洲精品久久久蜜桃| 爽好久久久欧美精品| 不卡在线观看av| 日韩欧美中文字幕公布| 亚洲欧洲www| 极品少妇xxxx精品少妇| 91精品1区2区| 国产精品久久久久久久蜜臀| 日本v片在线高清不卡在线观看| 99久久er热在这里只有精品66| 日韩三级精品电影久久久| 一区二区三区四区精品在线视频| 国产综合色在线| 在线综合视频播放| 亚洲综合自拍偷拍| 91小视频在线| 欧美激情一区在线观看| 韩国精品一区二区| 欧美一级黄色片| 午夜精品福利一区二区蜜股av| 99国产精品一区| 中文字幕在线不卡国产视频| 国产精品一区久久久久| 精品国产91亚洲一区二区三区婷婷| 亚洲电影在线播放| 欧美日韩久久久| 亚洲高清免费一级二级三级| 欧美视频一区二区在线观看| 一区二区三区在线视频免费观看| 97久久超碰精品国产| 国产精品天干天干在线综合| 国产成人免费视频一区| 国产日韩欧美高清在线| 国产一区视频导航| 国产日韩综合av| 国产成人免费av在线| 国产欧美精品一区二区色综合朱莉| 国产在线精品不卡| 久久精品视频一区| 丁香天五香天堂综合| 日本一区二区三区视频视频| 豆国产96在线|亚洲| 亚洲欧美视频在线观看| 欧美视频中文字幕| 日韩福利电影在线观看| 精品久久免费看| 国产精品99久| 国产精品美女久久久久久久| 91片黄在线观看| 水野朝阳av一区二区三区| 精品乱码亚洲一区二区不卡| 国产一区三区三区| 亚洲欧洲av一区二区三区久久| 91蜜桃视频在线| 天天综合日日夜夜精品| 精品少妇一区二区三区在线视频| 久久精品理论片| 国产精品久久久久一区| 欧美综合在线视频| 久久99精品久久久久久久久久久久| 国产视频亚洲色图| 色偷偷88欧美精品久久久| 日本欧美在线看| 国产精品麻豆视频| 欧美日韩精品二区第二页| 久草中文综合在线| 亚洲欧美日韩小说| 日韩欧美电影在线| 99久久国产综合色|国产精品| 视频一区二区三区在线| 国产清纯在线一区二区www| 在线国产亚洲欧美| 国产乱理伦片在线观看夜一区| 亚洲欧洲综合另类在线| 日韩欧美一区二区在线视频| 成人精品视频一区二区三区尤物| 性做久久久久久| 国产精品国产三级国产aⅴ入口 | 久久综合中文字幕| 色偷偷一区二区三区| 国内精品久久久久影院薰衣草| 亚洲欧美一区二区三区国产精品| xfplay精品久久| 欧美精品一二三四| a级高清视频欧美日韩| 久久99精品国产麻豆不卡| 一级精品视频在线观看宜春院 | 日本不卡一二三| 日韩一区有码在线| 国产欧美日韩视频在线观看| 日韩一级在线观看| 欧美久久久久久久久| 99久久精品国产精品久久| 国产伦精品一区二区三区视频青涩 | 欧美老年两性高潮| 99国产精品视频免费观看| 久久国产综合精品| 亚洲二区视频在线| 一区二区三区精品在线观看| 亚洲国产经典视频| 国产日韩欧美一区二区三区综合| 日韩欧美在线一区二区三区| 欧美无砖专区一中文字| 色综合天天性综合| 成人高清伦理免费影院在线观看| 国产麻豆视频精品| 国产成人精品午夜视频免费| 美国十次综合导航| 日本亚洲天堂网| 免费成人结看片| 青青草国产精品亚洲专区无| 日韩国产精品91| 日韩avvvv在线播放| 天堂久久久久va久久久久| 亚洲不卡av一区二区三区| 亚洲午夜av在线| 三级成人在线视频| 日韩二区在线观看| 日韩精品免费视频人成| 视频在线观看国产精品| 日韩国产欧美三级| 精品一区二区三区免费播放| 精品一区二区综合| 国产a级毛片一区| 成人天堂资源www在线| 不卡电影一区二区三区| 91麻豆精品视频| 欧美日韩国产经典色站一区二区三区| 欧美日韩一区在线观看| 91精品国产综合久久精品app | 精品日韩欧美在线| 国产日韩欧美一区二区三区乱码 | 2022国产精品视频| 国产精品乱人伦中文| 亚洲精品日韩一| 丝袜美腿亚洲综合| 国产一区欧美二区| 91小视频免费观看| 欧美久久久影院| 久久久不卡网国产精品二区| 国产精品私房写真福利视频| 亚洲精品自拍动漫在线| 日韩—二三区免费观看av| 国产成人精品综合在线观看| 在线免费观看日韩欧美| 777久久久精品| 国产精品久久久久影视| 亚洲国产精品久久久男人的天堂| 男女激情视频一区| 成人动漫视频在线| 欧美妇女性影城| 国产亚洲综合在线| 亚洲最快最全在线视频| 精品亚洲欧美一区| 91国内精品野花午夜精品| 欧美成人r级一区二区三区| 国产精品免费网站在线观看| 亚洲成a天堂v人片| 国产福利一区二区三区视频在线 | 日韩三级精品电影久久久| 中文字幕亚洲在| 精品系列免费在线观看| av亚洲精华国产精华| 欧美一级高清片| 亚洲在线视频一区| 国产成人精品在线看| 日韩欧美一二三四区| 亚洲视频小说图片| 国产精品一区二区免费不卡| 欧美丰满一区二区免费视频| 中文字幕一区二区三区不卡在线 | 色哟哟欧美精品| 国产欧美综合色| 青娱乐精品在线视频| 日本精品视频一区二区| 久久精品视频在线看| 久久精品99国产精品| 欧美精品久久一区二区三区| 亚洲日本在线天堂| 风间由美一区二区三区在线观看 | 久久 天天综合| 欧美日韩不卡一区| 亚洲人xxxx| 丁香激情综合五月| 久久香蕉国产线看观看99| 天堂影院一区二区| 91福利在线观看| 最新日韩av在线| 国产成a人亚洲| 久久综合久久鬼色| 久久66热偷产精品| 久久亚洲私人国产精品va媚药| 青青草97国产精品免费观看无弹窗版| 欧美性淫爽ww久久久久无| 一区二区三区四区五区视频在线观看 |