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

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

?? page196.cpp

?? 殷人昆 數(shù)據(jù)結(jié)構(gòu) 一些書中的源代碼 系某師兄所做 c++版
?? CPP
字號:
#include<stack.h>
#include<queue.h>
#define DefaultSize 20


template <class Type> class Tree;

template <class Type> class TreeNode {
  friend class Tree<Type>;
  private:
    Type data;
    TreeNode<Type> *firstChild, *nextSibling;
    TreeNode ( Type value=0, TreeNode<Type> *fc=NULL, TreeNode<Type> *ns=NULL ):data (value), firstChild (fc), nextSibling (ns) { }
    };


template <class Type> class Tree {
  public:
    Tree ( ) { root = current = NULL; }
    void BuildRoot(Type rootVal);
    int  Root();
    int  FirstChild();
    int  NextSibling();
    int  Parent();
    int  Find(Type target);
    void InsertChild(Type value);
    int  RemoveChild(int i);
    void RemovesubTree();
    void PreOrder();
    void NorecPreOrder();
    void PostOrder();
    void PostOrder1();
    void LevelOrder();
    int  IsEmpty();
    void visit();
  private:
    TreeNode<Type> *root, *current;
    void PreOrder ( ostream & out, TreeNode<Type> *p );
    int Find ( TreeNode<Type> *p, Type target );
    void RemovesubTree ( TreeNode<Type> *p );
    int FindParent ( TreeNode<Type> *t, TreeNode<Type> *p );
  };


  template <class Type> void Tree<Type>::BuildRoot ( Type rootVal ) {
    root = current = new TreeNode<Type> (rootVal);
    }

  template <class Type> int Tree<Type>:: Root ( ) {
    if ( root == NULL ) {
     current = NULL;
     return 0;
       }
      else {
	current = root;
	return 1;
	  }
    }

  template <class Type> int Tree<Type>::FirstChild ( ) {
    if ( current != NULL && current->firstChild != NULL ) {
      current = current->firstChild;  return 1;
      }
    current = NULL;
    return 0;
    }

  template <class Type> int Tree<Type>::NextSibling ( ) {
    if ( current != NULL && current->nextSibling != NULL ) {
      current = current->nextSibling;
      return 1;
       }
    current = NULL;  return 0;
    }

  template <class Type> int Tree<Type>::Parent ( ) {
    TreeNode<Type> *p = current,  *t;
    if ( current == NULL || current == root ) { current = NULL;  return 0; }
    t = root;
    int k = FindParent ( t, p );
    return k;
  }

  template <class Type> int Tree<Type>::FindParent ( TreeNode<Type> * t,TreeNode<Type> * p ){
    TreeNode<Type> *q = t->firstChild;
    while ( q != NULL && q != p ) {
      int i=FindParent(q,p);
      if( i )  return i;
      q = q->nextSibling;
      }
    if ( q != NULL && q ==p ) { current = t;  return 1; }
      return 0;
  }

  template <class Type> int Tree<Type>::Find ( Type target ) {
    if ( IsEmpty ( ) ) return 0;
    return Find ( root, target );
  }

  template <class Type> int Tree<Type>::Find ( TreeNode<Type> *p, Type target ) {
    int result = 0;
    if ( p->data == target ) { result = 1;  current = p; }
      else {
	TreeNode<Type> *q = p->firstChild;
	while ( q != NULL && ! ( result = Find ( q, target ) ) ) q = q->nextSibling;
		   }
		   return result;
		}

  template <class Type> void Tree<Type>::InsertChild ( Type value ) {
    TreeNode<Type> *newNode = new TreeNode<Type> (value);
    if ( current->firstChild == NULL ) current->firstChild = newNode;
      else {
	TreeNode<Type> *p = current->firstChild;
	while ( p->nextSibling != NULL ) p = p->nextSibling;
	p->nextSibling = newNode;
	}
    }

  template <class Type> int Tree<Type>::RemoveChild ( int i ) {
    TreeNode<Type> * s;
    if ( i == 1 ) {
      s = current->firstChild;
      if ( s != NULL ) current->firstChild = s->nextSibling;
      else return 0;
      }
      else {
	TreeNode<Type> *q = current->firstChild;  int k = 1;
	while ( q != NULL && k < i-1 ) { q = q->nextSibling;  k++; }
	if ( q != NULL ) {
	  s = q->nextSibling;
	  if ( s != NULL )q->nextSibling = s->nextSibling;
	  else return 0;
	 }
	 else return 0;
      }
    RemovesubTree(s);
    return 1;
    }

  template <class Type> void Tree<Type>::RemovesubTree ( TreeNode<Type> *p ) {
    TreeNode<Type> *q = p->firstChild,  *next;				
    while ( q != NULL ) {
      next = q->nextSibling;
      RemovesubTree ( q );  q = next;
      }
    delete p;
    }

  template <class Type> void Tree<Type>::RemovesubTree ( ) {
    if ( current != NULL ) {
      if ( current == root ) root = NULL;
	RemovesubTree ( current );  current = NULL;
	  }
    }

  template <class Type> void Tree<Type>::PreOrder ( ) {
    if ( !IsEmpty ( ) ) {
      visit ( );
      TreeNode<Type> *p = current;
      int i = FirstChild ( );
      while (i) { PreOrder ( );  i = NextSibling ( ); }
      current = p;
      }
    }

  template <class Type> void Tree<Type>::PostOrder ( ) {
    if ( !IsEmpty ( ) ) {
      TreeNode<Type> *p = current;
      int i = FirstChild ( );
      while (i) {
	PostOrder ( );
	i = NextSibling ( );
	  }
       current = p;
       visit ( );
	}
    }

  template <class Type> void Tree<Type>::NorecPreOrder( ) {
    Stack<TreeNode<Type>*> st;
    TreeNode<Type> *p = current;
    do {
      while ( !IsEmpty ( ) ) {
	visit ( );
	st.Push ( current );
	FirstChild ( );
	 }
      while ( IsEmpty ( ) && !st.IsEmpty ( ) ) {
       current = st.Pop ( );
       NextSibling ( );
	 }
	} while ( !IsEmpty ( ) );
    current = p;
    }

  template <class Type> void Tree<Type>::PostOrder1 ( ) {
    Stack<TreeNode<Type>* > st(DefaultSize);
    TreeNode<Type> *p = current;
    do {
      while ( !IsEmpty ( ) ) {
	st.Push(current);
	FirstChild ( );
	}
      while ( IsEmpty ( ) && !st.IsEmpty ( ) ) {
	current = st.Pop ( );
	visit ( );
	NextSibling ( );
	}
     } while ( !IsEmpty ( ) );
    current = p;
    }

  template <class Type> void Tree<Type>::LevelOrder ( ) {
    Queue<TreeNode<Type> * > Qu ;
    if ( ! IsEmpty ( ) ) {
      TreeNode<Type> *p = current;  Qu.EnQueue ( current );
      while ( !Qu.IsEmpty ( ) ) {
	current = Qu.DeQueue ( );
	visit ( );
	FirstChild ( );
	while ( !IsEmpty ( ) ) { Qu.EnQueue ( current );  NextSibling ( ); }
	}
      current = p;
    }
  }
  template<class Type> void Tree<Type>::visit(){
    cout<<current->data<<endl;
    }

  template<class Type> int Tree<Type>::IsEmpty(){
    return current==NULL;
    }


void main(){
  Tree<int> tree;
  tree.BuildRoot(100);
  for(int i=0;i<8;i++)  tree.InsertChild(i);
  tree.PreOrder();
  tree.PostOrder();
  tree.PostOrder1();
  tree.RemoveChild(5);
  tree.PreOrder();
  tree.NorecPreOrder();
  tree.LevelOrder();
  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜精品丝袜在线| 欧美性生活大片视频| 国产精品69久久久久水密桃| 国产99久久久精品| 欧美日韩一区二区三区高清 | 中文字幕日韩精品一区| 亚洲另类春色国产| 日韩精品久久久久久| 国产麻豆欧美日韩一区| 欧美最新大片在线看| 久久综合网色—综合色88| 一区在线中文字幕| 日韩电影免费在线| 国产高清不卡二三区| 欧美视频一区在线| 久久久久88色偷偷免费| 亚洲高清免费一级二级三级| 激情成人综合网| 日本精品视频一区二区三区| 精品国产乱码久久久久久图片 | 欧美日韩高清一区二区不卡| 久久亚区不卡日本| 亚洲综合小说图片| 国产福利精品一区二区| 8x8x8国产精品| 玉米视频成人免费看| 国产一区二区不卡老阿姨| 91女人视频在线观看| 国产校园另类小说区| 三级久久三级久久久| 在线观看日韩毛片| ...中文天堂在线一区| 激情小说欧美图片| 日韩一级片在线播放| 一区二区国产视频| av午夜一区麻豆| 欧美国产日韩在线观看| 日本中文字幕不卡| 欧美日韩aaaaa| 亚洲成人一区二区在线观看| 99re8在线精品视频免费播放| 国产亚洲视频系列| 激情成人午夜视频| 久久精品视频在线看| 九色porny丨国产精品| 欧美精品 日韩| 一区二区三区在线视频观看| 成人av电影在线播放| 中文字幕日韩av资源站| 99久久99久久精品免费看蜜桃| 久久久精品中文字幕麻豆发布| 国产精品1024| 国产精品少妇自拍| 激情文学综合插| 久久久久久9999| 大胆亚洲人体视频| 国产精品国产三级国产专播品爱网 | 精品盗摄一区二区三区| 蜜桃视频一区二区三区在线观看 | 奇米色一区二区| 日韩欧美一区在线| 国产麻豆91精品| 欧美激情艳妇裸体舞| www.66久久| 夜夜嗨av一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 亚洲黄色片在线观看| 欧美嫩在线观看| 裸体健美xxxx欧美裸体表演| 日韩欧美黄色影院| 国产成人亚洲综合a∨猫咪| 国产欧美日韩视频一区二区| 99视频精品在线| 亚洲一区二区精品3399| 91亚洲精品久久久蜜桃| 夜色激情一区二区| 日韩精品最新网址| 风间由美一区二区三区在线观看 | 欧美大片拔萝卜| 国产在线播精品第三| 国产日韩亚洲欧美综合| 色视频欧美一区二区三区| 亚洲伊人色欲综合网| 欧美一区二区美女| 风流少妇一区二区| 亚洲va中文字幕| 精品国产免费久久| 99久久精品一区二区| 中文字幕日韩一区| 欧美一级精品在线| av在线不卡免费看| 天堂蜜桃一区二区三区| 国产欧美一区二区精品秋霞影院| 色一情一乱一乱一91av| 亚洲gay无套男同| 亚洲国产高清aⅴ视频| 555www色欧美视频| 99国产精品99久久久久久| 麻豆中文一区二区| 亚洲精品五月天| 国产精品美女久久久久久久网站| 91黄视频在线| 国产精品18久久久久久久网站| 亚洲国产精品自拍| 中文字幕一区免费在线观看| 欧美专区亚洲专区| 黄一区二区三区| 亚洲另类色综合网站| 国产欧美日韩精品一区| 欧美性大战xxxxx久久久| 岛国精品在线观看| 久久91精品国产91久久小草| 亚洲一区二区影院| 亚洲视频一二三| 中文一区二区在线观看| 欧美白人最猛性xxxxx69交| 欧美这里有精品| 99国内精品久久| 成av人片一区二区| 国产99久久久国产精品潘金| 麻豆成人久久精品二区三区红| 国产无人区一区二区三区| 亚洲精品一线二线三线无人区| 91麻豆精品国产91久久久久久| 一本久久a久久免费精品不卡| 国产永久精品大片wwwapp| 日韩中文字幕区一区有砖一区| 久久九九久精品国产免费直播| 日韩欧美国产不卡| 日韩欧美国产综合| 精品久久久久av影院 | 欧美高清视频一二三区| 91福利精品视频| 在线日韩国产精品| 日本二三区不卡| 欧美天堂一区二区三区| 欧洲一区在线电影| 欧美色欧美亚洲另类二区| 欧美日韩日日骚| 3d成人h动漫网站入口| 91精品欧美久久久久久动漫| 制服丝袜成人动漫| 日韩一区二区免费视频| 欧美一区二区福利在线| 日韩视频免费观看高清完整版| 91精品国模一区二区三区| 欧美日韩国产成人在线91| 欧美日韩国产一级| 欧美裸体bbwbbwbbw| 欧美日韩国产高清一区二区三区| 717成人午夜免费福利电影| 欧美一区二区三区公司| 久久嫩草精品久久久精品一| 日本一区免费视频| 亚洲欧美一区二区久久| 亚洲国产综合视频在线观看| 免费欧美日韩国产三级电影| 国产乱理伦片在线观看夜一区| 成人的网站免费观看| 在线中文字幕不卡| 日韩一区二区在线观看视频| 久久久久久久久岛国免费| 亚洲日本欧美天堂| 免费人成在线不卡| 国产aⅴ综合色| 欧美日韩免费观看一区二区三区| 欧美一区二区视频在线观看2020| 久久综合99re88久久爱| 中文字幕一区二区三区精华液| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品女人毛片| 亚洲国产日韩a在线播放性色| 久久精品国产精品亚洲红杏| 成人h精品动漫一区二区三区| 欧美午夜理伦三级在线观看| 久久久影院官网| 亚洲最大成人综合| 国产精品自拍av| 欧美性一级生活| 欧美国产亚洲另类动漫| 午夜久久久久久电影| 丁香六月久久综合狠狠色| 精品国产91久久久久久久妲己| 亚洲成人动漫av| 91久久国产综合久久| 亚洲免费看黄网站| a级精品国产片在线观看| 久久日一线二线三线suv| 免费高清在线一区| 欧美一级高清大全免费观看| 亚洲午夜精品17c| 欧美亚洲日本国产| 亚洲福利国产精品| 欧美日韩免费观看一区二区三区| 亚洲精品第一国产综合野| 91在线porny国产在线看| 亚洲视频免费观看| 91麻豆国产福利精品| 一区二区三区在线影院| 欧美视频在线一区二区三区|