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

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

?? treem.txt

?? C++描述的數(shù)據(jù)結(jié)構(gòu)內(nèi)容,在C++builder的環(huán)境中運(yùn)行,這是第二部分
?? TXT
字號(hào):
//樹的孩子兄弟表示法為存儲(chǔ)結(jié)構(gòu)的結(jié)構(gòu)體Tree.h
template<class T> class Tree;
template<class T> struct TreeNode
{friend class Tree<T>;//樹類為友元
 private:
  TreeNode<T> *firstChild;//第一個(gè)孩子結(jié)點(diǎn)指針域
  TreeNode<T> *nextSibling;//下一個(gè)兄弟結(jié)點(diǎn)指針域
 public:
  T data;//數(shù)據(jù)域
//構(gòu)造函數(shù)
  TreeNode(T value,TreeNode<T> *fc=NULL,
    TreeNode<T> *ns=NULL):data(value),
     firstChild(fc),nextSibling(ns){}
//訪問指針域的成員函數(shù)
  TreeNode<T>* &FirstChild()
   {return firstChild;}
  TreeNode<T>* &NextSibling()
   {return nextSibling;}
};
//樹類
template<class T> class Tree
{private:
  TreeNode<T> *root;//根結(jié)點(diǎn)指針
  TreeNode<T> *curr;//當(dāng)前結(jié)點(diǎn)指針
  //顯示以t為先根結(jié)點(diǎn)的樹的數(shù)據(jù)域
  void PreOrderTree(TreeNode<T> *&t);
  //顯示以t為后根結(jié)點(diǎn)的樹的數(shù)據(jù)域
  void PosOrderTree(TreeNode<T> *&t);
  //使當(dāng)前結(jié)點(diǎn)為t所指結(jié)點(diǎn)
  int Current(TreeNode<T> *&t);
  //在樹root中回溯查找結(jié)點(diǎn)s的雙親結(jié)點(diǎn)
  TreeNode<T> *SearchParent(TreeNode<T> *&root,TreeNode<T> *&s);
 public:
  //構(gòu)造函數(shù)與析構(gòu)函數(shù)
  Tree(){root=curr=NULL;}
  ~Tree(){DeleteSubTree(root);}
  //使根結(jié)點(diǎn)為當(dāng)前結(jié)點(diǎn)
  int Root();
  //使當(dāng)前結(jié)點(diǎn)的雙親結(jié)點(diǎn)為當(dāng)前結(jié)點(diǎn)
  int Parent();
  //使當(dāng)前結(jié)點(diǎn)的第一個(gè)孩子結(jié)點(diǎn)為當(dāng)前結(jié)點(diǎn)
  int FirstChild();
  //使當(dāng)前結(jié)點(diǎn)的兄弟結(jié)點(diǎn)為當(dāng)前結(jié)點(diǎn)
  int NextSibling();
  //把valve插入到當(dāng)前結(jié)點(diǎn)的最后一個(gè)結(jié)點(diǎn)
  void InsertChild(T value);
  //刪除以t為根結(jié)點(diǎn)的子樹
  void DeleteSubTree(TreeNode<T> *&t);
  //刪除當(dāng)前結(jié)點(diǎn)的第i個(gè)孩子結(jié)點(diǎn)
  int DeleteChild(int i);
  //刪除以root為根結(jié)點(diǎn)的子樹的第i個(gè)孩子結(jié)點(diǎn)
  int DeleteChild1(int i);
  //按先根遍歷次序顯示樹的數(shù)據(jù)域值
  void DisplayTree();
  //按后根遍歷次序顯示樹的數(shù)據(jù)域值
  void DisplayTree1();
};
//樹類的實(shí)現(xiàn)Tree.cpp
template<class T>
void Tree<T>::DeleteSubTree(TreeNode<T> *&t)
{if(t==NULL) return;
 TreeNode<T> *q=t->firstChild,*p;
 while(q!=NULL)
 {p=q->nextSibling;
  DeleteSubTree(q);
  q=p;}
  cout<<"釋放:"<<setw(2)<<t->data;
  delete t;
}
template<class T>
int Tree<T>::Current(TreeNode<T> *&t)
{if(t==NULL) return 0;
 curr=t;
 return 1;
}
template<class T>
int Tree<T>::Root()
{if(root==NULL)
  {curr=NULL;
   return 0;}
 return Current(root);
}
template<class T>
int Tree<T>::FirstChild()
{if(curr!=NULL&&curr->firstChild!=NULL)
  return Current(curr->firstChild);
 else return 0;
}
template<class T>
int Tree<T>::NextSibling()
{if(curr!=NULL&&curr->nextSibling!=NULL)
  return Current(curr->nextSibling);
 else return 0;
}
template<class T>
int Tree<T>::Parent()
{if(curr==NULL)
  {curr=root;
   return 0;}
 TreeNode<T> *p=SearchParent(root,curr);
 if(p==NULL) return 0;
 else return Current(p);
}
template<class T>
TreeNode<T> *Tree<T>::SearchParent(TreeNode<T> *&root,TreeNode<T> *&s)
{if(root==NULL) return NULL;
 if(root->FirstChild()==s||root->NextSibling()==s)
  return root;
 TreeNode<T> *p;
 if((p=SearchParent(root->FirstChild(),s))!=NULL) return p;
 if((p=SearchParent(root->NextSibling(),s))!=NULL) return p;
 return NULL;
}
template<class T>
void Tree<T>::InsertChild(T value)
{TreeNode<T> *newNode=new TreeNode<T> (value);
 if(root==NULL)  //當(dāng)為空樹時(shí)
  {root=curr=newNode;
   return;}
 if(curr->firstChild==NULL)//當(dāng)當(dāng)前結(jié)點(diǎn)無(wú)孩子時(shí)
  curr->firstChild=newNode;
 else                     //當(dāng)當(dāng)前結(jié)點(diǎn)有孩子時(shí)
  {TreeNode<T> *p=curr->firstChild;
   while(p->nextSibling!=NULL) p=p->nextSibling;
   p->nextSibling=newNode;
  }
  Current(newNode);//使新建立的結(jié)點(diǎn)成為當(dāng)前結(jié)點(diǎn)
}      
template<class T>
int Tree<T>::DeleteChild(int i)
{TreeNode<T> *r=NULL;
 if(i==1)         //當(dāng)刪除當(dāng)前結(jié)點(diǎn)的第一棵子樹時(shí)
 {r=curr->firstChild;
  if(r==NULL) return 0;//要?jiǎng)h除子樹為空時(shí)返回
  curr->firstChild=r->nextSibling;//脫鏈要?jiǎng)h除的子樹
 }
 else {          //當(dāng)刪除當(dāng)前結(jié)點(diǎn)的其他子樹時(shí)
  int k=1;
  TreeNode<T> *p=curr->firstChild;
  while(p!=NULL&&k<=i-1)//尋找要?jiǎng)h除子樹的指針
  {p=p->nextSibling;
   k++;}
  if(p!=NULL)//尋找到要?jiǎng)h除的子樹的指針
  {r=p->nextSibling;
   if(r!=NULL)
    p->nextSibling=r->nextSibling;
   else return 0;
  }
  else return 0;
 }
 DeleteSubTree(r);
 return 1;
}
template<class T>
int Tree<T>::DeleteChild1(int i)
{if(root==NULL) return 0;//當(dāng)為空樹時(shí)
 TreeNode<T> *r=NULL,*q=root->firstChild;
 if(i==1&&q!=NULL) //當(dāng)?shù)谝唤Y(jié)點(diǎn)有孩子時(shí)
  {r=root->firstChild;
   root->firstChild=r->nextSibling;//脫鏈要?jiǎng)h除的子樹
  }
 else             //要?jiǎng)h除第一結(jié)點(diǎn)外的其他子樹時(shí)
  {int k=1;
   TreeNode<T> *p=root->firstChild;
   while(p!=NULL&&k<=i-1)//尋找要?jiǎng)h除子樹的指針
   {p=p->nextSibling;
    k++;
   }
  if(p!=NULL)    //尋找到要?jiǎng)h除的子樹的指針
   {r=p->nextSibling;
    if(r!=NULL)
     p->nextSibling=r->nextSibling;//脫鏈要?jiǎng)h除的子樹
    else return 0;}
  else return 0;
 }
 DeleteSubTree(r);//調(diào)用函數(shù)執(zhí)行刪除
 return 1;    
}
template<class T>
void Tree<T>::PreOrderTree(TreeNode<T> *&t)
{if(t==NULL) return;
 cout<<setw(2)<<t->data;//顯示根結(jié)點(diǎn)數(shù)據(jù)
 if(t->firstChild!=NULL)//先根遍歷子樹
  PreOrderTree(t->firstChild);
 if(t->nextSibling!=NULL)
  PreOrderTree(t->nextSibling);
}
template<class T>
void Tree<T>::DisplayTree()
{PreOrderTree(root);}

template<class T>
void Tree<T>::DisplayTree1()
{PosOrderTree(root);}

template<class T>
void Tree<T>::PosOrderTree(TreeNode<T> *&t)
{if(t==NULL) return;
 if(t->firstChild!=NULL)//后根遍歷子樹
  PosOrderTree(t->firstChild);
 cout<<setw(2)<<t->data;//顯示根結(jié)點(diǎn)數(shù)據(jù)
 if(t->nextSibling!=NULL)
  PosOrderTree(t->nextSibling);
}
//樹類相關(guān)操作的測(cè)試TreeM.cpp
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<conio.h>
#include "Tree.h"
#include "Tree.cpp"
void main()
{cout<<"TreeM.cpp運(yùn)行結(jié)果:\n";
 int i;
 Tree<char> t;
 t.InsertChild('A');
 for(i=0;i<7;i++)
 {t.Root();
  if(i>=3&&i<5) t.FirstChild();
  t.InsertChild('B'+i);
 }
 cout<<"按后根遍歷顯示的結(jié)點(diǎn)次序?yàn)?\n";
 t.DisplayTree1();
 int k;
 cout<<"\n輸入欲刪除第幾個(gè)結(jié)點(diǎn)(k):";cin>>k;
 if(t.DeleteChild1(k))
   cout<<"\n第"<<k<<"個(gè)孩子結(jié)點(diǎn),刪除成功!\n";
 else cout<<"\n第"<<k<<"個(gè)孩子結(jié)點(diǎn),刪除失敗!\n";
 cout<<"按先根遍歷顯示的結(jié)點(diǎn)次序?yàn)?\n";
 t.DisplayTree();
 getch();
 cout<<endl<<"析構(gòu)函數(shù)按后根遍歷釋放結(jié)點(diǎn)的次序?yàn)?\n";}
TreeM.cpp運(yùn)行結(jié)果:
按后根遍歷顯示的結(jié)點(diǎn)次序?yàn)?
 E F B C D G H A
輸入欲刪除第幾個(gè)結(jié)點(diǎn)(k):1
釋放: E釋放: F釋放: B
第1個(gè)孩子結(jié)點(diǎn),刪除成功!
按先根遍歷顯示的結(jié)點(diǎn)次序?yàn)?
 A C D G H
析構(gòu)函數(shù)按后根遍歷釋放結(jié)點(diǎn)的次序?yàn)?
釋放: C釋放: D釋放: G釋放: H釋放: A

TreeM.cpp運(yùn)行結(jié)果:
按后根遍歷顯示的結(jié)點(diǎn)次序?yàn)?
 E F B C D G H A
輸入欲刪除第幾個(gè)結(jié)點(diǎn)(k):3
釋放: G
第3個(gè)孩子結(jié)點(diǎn),刪除成功!
按先根遍歷顯示的結(jié)點(diǎn)次序?yàn)?
 A B E F C D H
析構(gòu)函數(shù)按后根遍歷釋放結(jié)點(diǎn)的次序?yàn)?
釋放: E釋放: F釋放: B釋放: C釋放: D釋放: H釋放: A

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男女性生活在线直播观看| 怡红院av一区二区三区| 91久久奴性调教| 一区二区三区免费在线观看| 91一区在线观看| 免费成人在线网站| 一本色道亚洲精品aⅴ| 亚洲色图清纯唯美| 欧美亚洲国产bt| 国产欧美一区二区精品仙草咪 | 国产一级精品在线| 精品少妇一区二区三区在线视频| 国产在线精品一区二区不卡了| 91免费精品国自产拍在线不卡| 午夜精品久久一牛影视| 综合激情成人伊人| 国产精品无圣光一区二区| 26uuu久久综合| 欧美一区二区视频在线观看2020| 99re这里都是精品| 不卡一卡二卡三乱码免费网站| 激情文学综合丁香| 另类小说综合欧美亚洲| 视频一区国产视频| 亚洲电影一级片| 夜夜嗨av一区二区三区| 成人欧美一区二区三区小说| 中文字幕av免费专区久久| 精品精品欲导航| 日韩一级高清毛片| 91精品国产一区二区人妖| 欧美日韩dvd在线观看| 欧美综合天天夜夜久久| 欧美影院一区二区三区| 色婷婷久久综合| 在线欧美一区二区| 欧美在线不卡一区| 欧美三级日韩在线| 欧美日韩精品一区二区三区四区| 在线观看区一区二| 欧美男生操女生| 91精品婷婷国产综合久久性色 | 国产成人精品免费看| 国产一区二区三区蝌蚪| 国产精品一区专区| 成人一区二区在线观看| 9久草视频在线视频精品| 99这里只有久久精品视频| 99re这里都是精品| 日本高清不卡视频| 91精品国产综合久久香蕉的特点| 欧美精品99久久久**| 欧美一区二区日韩一区二区| 欧美大胆一级视频| 久久久精品人体av艺术| 国产精品乱人伦| 亚洲人成亚洲人成在线观看图片| 亚洲精品乱码久久久久| 亚洲成av人片在线观看无码| 久久精品国产99久久6| 韩国成人在线视频| av中文字幕一区| 欧美日韩一区二区三区视频| 91精品国产福利| 久久久久久久综合色一本| 国产精品久久久久久久久快鸭| 一级女性全黄久久生活片免费| 视频一区在线播放| 国产精品系列在线播放| 国产日韩一级二级三级| 亚洲精品精品亚洲| 日本三级韩国三级欧美三级| 国产美女一区二区三区| 91在线观看污| 欧美一级理论性理论a| 国产精品三级久久久久三级| 亚洲综合无码一区二区| 国产综合成人久久大片91| jlzzjlzz亚洲日本少妇| 日韩一卡二卡三卡四卡| 中文字幕不卡在线观看| 日韩精品国产欧美| www.欧美精品一二区| 欧美一区二区三区在线| 亚洲特黄一级片| 韩国av一区二区| 精品视频在线免费看| 欧美激情在线观看视频免费| 无码av免费一区二区三区试看| 国产xxx精品视频大全| 欧美日韩一区成人| 欧美激情一区二区三区在线| 日韩国产精品久久久久久亚洲| 福利一区福利二区| 日韩午夜在线影院| 亚洲精品国久久99热| 国产精品亚洲视频| 欧美一级夜夜爽| 亚洲永久免费视频| 成人午夜免费电影| 日韩欧美区一区二| 亚洲国产cao| eeuss国产一区二区三区| 精品国产伦一区二区三区免费| aaa欧美日韩| 精品国产三级电影在线观看| 亚洲福中文字幕伊人影院| 成人福利电影精品一区二区在线观看 | 日本大胆欧美人术艺术动态 | 国产成人精品影视| 精品国产免费一区二区三区四区| 一二三区精品视频| 色综合咪咪久久| 中文字幕第一页久久| 国产麻豆成人传媒免费观看| 日韩视频免费观看高清完整版在线观看 | 国产日产欧美一区| 久久99精品国产.久久久久久| 欧美性猛交xxxxxx富婆| 亚洲日穴在线视频| 成人国产精品免费网站| 久久综合九色综合97_久久久| 日本人妖一区二区| 91精品欧美一区二区三区综合在| 一区二区三区四区亚洲| 色哟哟一区二区在线观看| 国产精品久久久久久久久免费相片 | 久久久www免费人成精品| 久久超级碰视频| 精品久久久网站| 麻豆一区二区99久久久久| 欧美精品在欧美一区二区少妇| 亚洲色图在线视频| 成人动漫一区二区| 亚洲欧美综合色| 一本久久综合亚洲鲁鲁五月天| 亚洲人被黑人高潮完整版| 色综合夜色一区| **网站欧美大片在线观看| 97久久超碰精品国产| 亚洲色图在线播放| 在线免费亚洲电影| 午夜不卡av在线| 欧美一区二区三区日韩视频| 美国三级日本三级久久99| 欧美不卡一二三| 国产精品77777| 亚洲欧美综合色| 欧美性生活一区| 日韩成人午夜精品| 久久综合狠狠综合久久激情| 国产a区久久久| 自拍偷拍欧美精品| 欧美色老头old∨ideo| 秋霞午夜鲁丝一区二区老狼| 精品国产露脸精彩对白| 成人av在线影院| 亚洲一级不卡视频| 日韩一区二区在线观看视频播放| 国内精品免费**视频| 成人欧美一区二区三区1314 | 7777精品伊人久久久大香线蕉最新版 | 最新热久久免费视频| 欧美视频中文字幕| 精品一区二区三区视频| 国产精品美日韩| 欧美唯美清纯偷拍| 国产又黄又大久久| 亚洲精品高清在线| 亚洲最大成人网4388xx| 欧美挠脚心视频网站| 国产精品一区在线观看乱码 | 亚洲欧美一区二区久久| 欧美疯狂性受xxxxx喷水图片| 狠狠网亚洲精品| 亚洲欧美国产毛片在线| 欧美一区二区三区电影| www.亚洲色图.com| 日韩国产精品91| **欧美大码日韩| 精品欧美久久久| 欧美中文字幕亚洲一区二区va在线| 毛片不卡一区二区| 亚洲六月丁香色婷婷综合久久| 欧美大片在线观看| 欧美影视一区在线| 粉嫩高潮美女一区二区三区| 亚洲国产精品久久人人爱蜜臀| 久久亚洲免费视频| 69堂成人精品免费视频| www.欧美.com| 国产在线看一区| 亚洲成人一二三| 亚洲欧洲精品一区二区三区不卡| 欧美一级黄色大片| 欧美丝袜自拍制服另类| 成人av在线电影| 国产一区二区三区av电影| 日韩在线卡一卡二| 一区二区三区四区中文字幕|