![數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view/7a215f1003d87ba32fa4284239874064/7a215f1003d87ba32fa42842398740641.gif)
![數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view/7a215f1003d87ba32fa4284239874064/7a215f1003d87ba32fa42842398740642.gif)
![數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view/7a215f1003d87ba32fa4284239874064/7a215f1003d87ba32fa42842398740643.gif)
![數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告_第4頁](http://file4.renrendoc.com/view/7a215f1003d87ba32fa4284239874064/7a215f1003d87ba32fa42842398740644.gif)
![數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告_第5頁](http://file4.renrendoc.com/view/7a215f1003d87ba32fa4284239874064/7a215f1003d87ba32fa42842398740645.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——數(shù)據(jù)結(jié)構(gòu)樹的試驗(yàn)報(bào)告數(shù)據(jù)結(jié)構(gòu)
實(shí)驗(yàn)報(bào)告
目的要求
1.把握二叉樹的存儲實(shí)現(xiàn)。
2.把握二叉樹的遍歷思想。
3.把握二叉樹的常見算法的程序?qū)崿F(xiàn)。
試驗(yàn)內(nèi)容
1.輸入字符序列,建立二叉鏈表。2.中序遍歷二叉樹:遞歸算法。3.中序遍歷二叉樹:非遞歸算法。(最好也能實(shí)現(xiàn)先序,后序非遞歸算法)4.求二叉樹的高度。
5.求二叉樹的葉子個數(shù)。
6.借助隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷。
7.在主函數(shù)中設(shè)計(jì)一個簡單的菜單,分別調(diào)試上述算法。
源程序:
1.頭文件:棧和隊(duì)列stack#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR0
#defineOVERFLOW-2typedefcharTElemType;typedefstructBiTNode{TElemTypedata;
structBiTNode*lchild,*rchild;}BiTNode,*BiTree;typedefBiTreeSElemType;typedefBiTreeQElemType;typedefBiTreeStatus;
typedefstructNode{//鏈棧的定義SElemTypedata;structNode*next;}NODE;
typedefstruct{
NODE*top;//鏈?zhǔn)綏5臈m斨羔榼Stack;
//鏈?zhǔn)綏5牟僮骼鐅oidInitStack(Stackif(!S.top)exit(OVERFLOW);//分派失敗S.top->next=NULL;
}
intStackEmpty(StackS){
if(S.top->next==NULL)return(TRUE);elsereturn(FALSE);}
voidPush(Stack
p=(NODE*)malloc(sizeof(NODE));if(!p)exit(OVERFLOW);//分派失敗p->data=e;
p->next=S.top->next;S.top->next=p;}
voidPop(Stack
if(StackEmpty(S))return;//??誩lse{p=S.top->next;e=p->data;
S.top->next=p->next;free(p);}}
//隊(duì)的操作
typedefstructQNode{QElemTypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;
voidInitQueue(LinkQueueif(!Q.front)exit(OVERFLOW);//存儲分派失敗Q.front->next=NULL;}
intEnQueue(LinkQueue
p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data=e;
p->next=NULL;
Q.rear->next=p;Q.rear=p;returnOK;}
intDeQueue(LinkQueueQueuePtrp;p=Q.front->next;e=p->data;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;free(p);returnOK;}
2.主程序
#include#include#include\#include\
inth=0,max=0,flag=0;//全局變量voidCreateBiTree(BiTreescanf(\if(ch=='')T=NULL;else{
T=(BiTree)malloc(sizeof(BiTNode));T->data=ch;
CreateBiTree(T->lchild);CreateBiTree(T->rchild);}}
//2.中序遍歷二叉樹:遞歸算法。voidzhbianli(BiTreeT){
if(!T)return;
zhbianli(T->lchild);printf(\zhbianli(T->rchild);}
//先序非遞歸遍歷
voidxifbianli(BiTreeT){BiTreep;
StackS;
InitStack(S);if(T)Push(S,T);
while(!StackEmpty(S)){Pop(S,p);printf(\if(p->rchild)Push(S,p->rchild);if(p->lchild)Push(S,p->lchild);}}
//3.中序遍歷二叉樹:非遞歸算法。voidzhfbianli(BiTreeT){BiTreep;StackS;
InitStack(S);p=T;
while(p||!StackEmpty(S)){if(p){Push(S,p);p=p->lchild;}else{Pop(S,p);if(p)printf(\p=p->rchild;}}}
//后序非遞歸遍歷
voidhofbianli(BiTreeT){
BiTreep;StackS;
InitStack(S);p=T;
while(T||!StackEmpty(S)){
if(T){
Push(S,T);T=T->lchild;
}else{
T=S.top->next->data;
if(T->rchild==NULL||T->rchild==p){
printf(\Pop(S,T);p=T;
T=NULL;}else{
T=T->rchild;}}}}
//4.求二叉樹的高度。inthight(BiTreeT){
inth,hl,hr;if(T){if(!T->lchildelse{hl=hight(T->lchild);hr=hight(T->rchild);h=(hl>hr?hl:hr)+1;}}elseh=0;return(h);}
//5.求二叉樹的葉子個數(shù)intleaf(BiTreeT){intn;
if(!T)n=0;else
if(!T->lchild
elsen=leaf(T->lchild)+leaf(T->rchild);
return(n);}
//8.借助隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷。voidduiliebianli(BiTreeT){
LinkQueueQ;InitQueue(Q);
if(T==NULL)return;BiTreep=T;
printf(\
if(p->lchild)EnQueue(Q,p->lchild);if(p->rchild)EnQueue(Q,p->rchild);while(Q.front!=Q.rear){DeQueue(Q,p);
printf(\
if(p->lchild)EnQueue(Q,p->lchild);if(p->rchild)EnQueue(Q,p->rchild);}
return;}
voidmain(){
BiTreeroot;intselect;
printf(\二叉樹試驗(yàn)\\n\
printf(\建立二叉樹,輸入字符序列:\\n\CreateBiTree(root);do{printf(\中序遞歸遍歷2中序非遞歸遍歷序列\(zhòng)\n\printf(\先序非遞歸遍歷序列4.后序非遞歸遍歷序列\(zhòng)\n\printf(\計(jì)算葉子6.計(jì)算高度\\n\printf(\隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷\\n\printf(\請輸入選擇:\scanf(\switch(select){case1:printf(\中序遞歸遍歷序列:\zhbianli(root);break;case2:printf(\中序非遞歸遍歷序列:\zhfbianli(root);break;case3:printf(\先序非遞歸遍歷序列:\
xifbianli(root);break;case4:printf(\后序非遞歸遍歷序列:\hofbianli(root);break;case5:printf(\二叉樹中葉子個數(shù)為:%d\\n\break;case6:hight(root);printf(\二叉樹中高度為:%d\\n\break;case7:printf(\隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷:\duiliebianli(root);break;case0:break;default:printf(\輸入選項(xiàng)錯誤!重新輸入!\\n\}
}while(select);}
程序運(yùn)行截圖
1.建立二叉樹
2.中序遞歸遍歷
3.中序非遞歸遍歷序列
4.先序非遞歸遍歷序列
5.后序非遞歸遍歷序列
6..計(jì)算葉子
7.計(jì)算高度
8.隊(duì)列實(shí)現(xiàn)二叉樹的層次遍歷
試驗(yàn)總結(jié)
這次的二叉樹試驗(yàn),整體來說還是很有難度的,由于二叉樹的遍歷要用到遞歸,比較難理解,而且非遞歸算法更加繁雜,規(guī)律性更強(qiáng)。雖然說完成了本次的試驗(yàn),但是還是感覺有不少地方理解的不是很透徹,現(xiàn)在想想真正有技術(shù)含量的東西大都不是我自
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技企業(yè)培訓(xùn)中的實(shí)驗(yàn)教學(xué)實(shí)踐
- 小學(xué)科學(xué)課堂上的寫作教學(xué)研究
- 青少年體育鍛煉的長期影響與實(shí)證研究
- 小學(xué)教師團(tuán)隊(duì)建設(shè)與綜合評價(jià)體系的構(gòu)建
- 高效照明方案打造舒適餐飲體驗(yàn)
- 2025年汽車皮件項(xiàng)目可行性研究報(bào)告
- 2025年全不銹鋼隔板嬰兒床項(xiàng)目可行性研究報(bào)告
- 2025年二硫氰基甲烷項(xiàng)目可行性研究報(bào)告
- 2025至2030年鐵芯橡膠腳輪項(xiàng)目投資價(jià)值分析報(bào)告
- 科技輔助下的創(chuàng)新型小學(xué)數(shù)學(xué)教育模式研究
- 2025年人教五四新版八年級物理上冊階段測試試卷含答案
- 2025新人教版英語七年級下單詞表(小學(xué)部分)
- 2025年春季1530安全教育記錄主題
- 礦山2025年安全工作計(jì)劃
- 2025年包裝印刷項(xiàng)目可行性研究報(bào)告
- 2025年九年級物理中考復(fù)習(xí)計(jì)劃
- 企業(yè)融資報(bào)告特斯拉成功案例分享
- 2024年《論教育》全文課件
- 給客戶的福利合同(2篇)
- 銷售調(diào)味品工作總結(jié)5篇
- SWITCH 勇者斗惡龍11S 金手指 版本:v1.0.3 最大金幣 最大迷你獎?wù)?32倍經(jīng)驗(yàn) 最大攻擊 所有材料
評論
0/150
提交評論