版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
*題目:按屏幕提示用前序方法建立一棵二叉樹,并能按凹入法顯示二叉樹結(jié)構(gòu)。編寫前序遍歷、中序遍歷、后序遍歷、層次遍歷程序。編寫求二叉樹的葉結(jié)點數(shù)、總結(jié)點數(shù)和深度的程序。設(shè)計一個選擇式菜單,以菜單方式選擇下列操作。二叉樹子系統(tǒng)建二叉樹凹入顯示先序遍歷中序遍歷后序遍歷層次遍歷求葉子數(shù)求結(jié)點數(shù)求樹深度返回請選擇菜單號(0—9)*/#include<stdio.h>#include<stdlib.h>typedefstructbTree 〃二叉樹結(jié)點chardata;〃值域structbTree*Ichild;〃左孩子structbTree*rchild;〃右孩子}BT;BT*createTree();voidshowTree(BT*t);voidpreOrder(BT*t);voidpostOrder(BT*t);voidinOrder(BT*t);voidlevelOrder(BT*t);intleafNum(BT*t);intnodeNum(BT*t);inttreeDepth(BT*t);Function:main()Description:主調(diào)函數(shù)Input:t:結(jié)點指針Return:intQhers:NULL** ?? ********水*********水*水****水*水*水水*水*水*水水*水水水水intnodeNum(BT*t) 〃結(jié)點數(shù)inti=O;if(t)〃結(jié)點不為空(i++;i=nodeNum(t->lchild)4-i;i=nodeNum(t->rchild)+i;)returni;)*來****求*求****水來水**求*求*求****水米水來*來*求*求*****本水水求水水水Function:treeDepth()Description:求二叉樹的深度Calls:treeDepth()Input:t:結(jié)點指針Return:intQhers:NULL**來**求*求******來來*來*求*求**求*求本*水求水來水本求求*求水永水水水本水水求來inttreeDepth(BT*t) 〃二叉樹的深度intIdep,rdep;if(t=NULL)〃結(jié)點不為空jreturn0;)else[ldep=treeDepth(t->lchild);rdep=treeDepth(t->rchild);if(ldep>rdep)〃左深度大于右深度)returnldep+1;〃返回左深度的值returnrdep+1;Calls:createTree()showTree()preOrder()postOrder()inOrder()leafNum()levelOrder()nodeNum()treeDepth()**求*水*水**水*求水水水*水水*水**求*水*水**水*求水水水*水水*水voidmain()(BT*t=NULL;intchoice,k=1;while(k)printf(H\n 二叉樹子系統(tǒng)\n〃);prints1——建一叉樹printf。'*2—凹入顯示printf(n3— 先序遍歷printf-4—中序遍歷printfC,5—后序遍歷printff,6———層次遍歷printf(M7—求葉子數(shù)printf("*8————求結(jié)點數(shù)printf("*9————求樹深度printf-0-一返回printf*******************************printfjMcfaK***************************1n'):printf(〃請選擇菜單號(0-9):〃);fflush(stdin);scanf("%d”,&choice);switch(choice)(printf(〃請輸入根結(jié)點('O'表示該結(jié)點為空):〃);t=createTree();printf(〃二叉樹建立成功。\n〃);break;showTree(t);break;printf(〃先序遍歷序列:〃);if(t==NULL){printf(〃空。\n〃);else{preOrder(t);)break;printf(〃中序遍歷序列:〃);if(t==NULL))printf(〃空。\n〃);)else(inOrder(t);}break;printf(〃后序遍歷序列:〃);if(t==NULL){printf(〃空。\n〃);}else{postOrder(t);}break;printf(〃層次遍歷序列:〃);if(t==NULL)printf(〃空。\n〃);}levelOrder(t);}break;printf(〃該二叉樹的葉子數(shù):〃);if(t==NULL)(printf("Oo\n");}else(printf(n%d0\nn,leafNum(t));)break;printf(〃該二叉樹的結(jié)點數(shù)為:〃);if(t==NULL)(printf("Oo\n");else(printf("%d。\n”,nodeNum(t));)break;printf(〃該二叉樹的深度為:〃);if(t==NULL)(printf("Oo\nH);}elseprintf("%d。\nM,treeDepth(t));}break;case0:k=0;break;default:k=1;break;********來****永*來****永*永****永*永**水*水水水水水水水水求水水求水水水Function:createTree()Description:建立二叉樹Calls:createTree()Input: NULLReturn:BT*Qhers:NULL** ** ******************水*水****求*水*水**永*求*水**水水*水BT*createTree() 〃建立二叉樹BT*t;charx;getchar();scanf("%cn5&x);〃獲取輸入的結(jié)點值if(x='0‘) 〃輸入的值為零,結(jié)點為空(t=NULL;)else{t=(BT*)malloc(sizeof(BT));t->data=x; 〃賦值printf(〃請輸入結(jié)點%c的左孩子:〃,t->data);t->lchild=createTree();〃遞歸建立左孩子printf(〃請輸入結(jié)點%c的右孩子:〃,t->data);t->rchild=createTree(); 〃遞歸調(diào)用}returnt;)**********************科"***樸M*******秒科*科:Function:showTree()Description:凹入顯示二叉樹Calls:voidInput:t:結(jié)點指針Return:voidOthers:NULL************************************************水voidshowTree(BT*t)〃顯示二叉樹voidshowTree(BT*t)〃顯示二叉樹BT*sta[100],*p;intlev[100][2];〃第一個空存要空的長度,第二空存擺布孩子的標示inttp,n,i,wid=4;if(t!=NULL)〃結(jié)點非空{(diào)printf(〃凹入法^去:\n〃);tp=l;sta[tp]=t; 〃將各個結(jié)點的指針放在指針數(shù)組中l(wèi)ev[tp][O]=wid; 〃顯示的前面的空白長度while(tp>0)(p=sta[tp];n=lev[tp][O];〃顯示for(i=0;i<n;i++){printf(巧;printf("%c",p->data);for(i=n+1;i<30;i+=2)(printf(“一”);}printf(H\nn);tp-;〃記錄擺布孩子if(p->lchild!=NULL)(tp++;sta[tp]=p->lchild;lev[tp][O]=n+wid;lev[tp][1]=1;iif(p->rchild!=NULL)tp++;sta[tp]=p->rchild;lev[tp][O]=n+wid;lev[tp][1]=2;)}}本水本求水求水本水本本水本水求水本求水本水本水水求水求水本水水本水求水求水水求水本水本水水本水求水Function:preOrder()Description:先序遍歷Calls:preOrder()Input:t:結(jié)點指針Return:voidQhers:NULL水本求水本水本水水本水本水本水水本水本水本水水本水本本本求水本水本水本水水本水本水本水水本水求水本voidpreOrder(BT*t)〃先序遍歷if(t)〃結(jié)點不為空(printf(〃%3c〃,t->data);〃顯示preOrder(t->lchild); //遞歸調(diào)用preOrder(t->rchild);}}***********它*******叱和叱***它它*****叱它叱*它它Function:postOrder()Description:后序遍歷Calls:postOrder()Input:t:結(jié)點指針Return:voidQhers:NULL**來**求*求******來來*來*求*求**求*求本*水求水來水本求求*求水永水水水本水水求來voidpostOrder(BT*t)〃后序遍歷if(t)〃結(jié)點不為空(postOrder(t->lchild);postOrder(t->rchild);printf(,z%3cz,,t->data);〃顯示]*來****求*求***本水來本本*求本求水水水本水本水本水來本來本來本求水本水本水本水水來水本水Function:inOrder()Description:中序遍歷Calls:inOrder()Input:t:結(jié)點指針Return:voidQhers:NULL*******************************求*水******求*****水*水voidinOrder(BT*t)〃中序遍歷if(t)〃結(jié)點不為空{(diào)inOrder(t->lchild);printf(,z%3c,z,t->data);〃顯示inOrder(t->rchild);1j*****來水來本****求水求*本水本水本水來*來本水本求水本水本水本水水本求本求本水來水水水水Function:levelOrder()Description:層次遍歷Calls:voidInput:t:結(jié)點指針Return:voidQhers:NULL**來**求*求******來來*來*求*求**求*求本*水求水來水本求求*求水永水水水本水水本水voidlevelOrder(BT*t)〃層次遍歷inti,j;BT*q[100];〃指針數(shù)組BT*p;P=t;if(p!=NULL)〃結(jié)點非空{(diào)i=l;q[i]=p;j=2;1while(i!=j)〃先將每一個結(jié)點的指針存入指針數(shù)組中,在顯示出來p=q[0;printf("%3cH,p->data);if(p->lchild!=NULL)〃左孩子非空(qO]=p->lchild;j++;)if(p->rchild!=NULL)〃左孩子非空)qO]=p->rchild;j++;}i++;〃為了顯示下一個結(jié)點}本家中本中中水中水中本中中水中水中本中中水中水中本中本水中水中本中本中中水中本中中水本水中本水本水Function:leafNum()Description:求二叉樹葉子數(shù)Calls:leafNum()Input:t:結(jié)點指針Return:intQhers:NULL***********************************************水
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙盒制作工崗前操作評估考核試卷含答案
- 麻料作物栽培工常識評優(yōu)考核試卷含答案
- 泥釉漿料制備輸送工安全防護測試考核試卷含答案
- 溫差電電池制造工成果轉(zhuǎn)化能力考核試卷含答案
- 賓客行李員崗前創(chuàng)新意識考核試卷含答案
- 木地板制造工誠信品質(zhì)模擬考核試卷含答案
- 煤間接液化分離操作工操作水平競賽考核試卷含答案
- 懷孕不參加培訓(xùn)的請假條
- 2025年坦克玻璃系列合作協(xié)議書
- 2025年針織、編織制品項目發(fā)展計劃
- 河南豫能控股股份有限公司及所管企業(yè)2026屆校園招聘127人筆試模擬試題及答案解析
- 未來五年養(yǎng)殖淡水鳙魚(胖頭魚)企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 2026年寧夏賀蘭工業(yè)園區(qū)管委會工作人員社會化公開招聘備考題庫參考答案詳解
- 癌痛患者心理支持策略
- 2025年12月份四川成都市第八人民醫(yī)院編外招聘9人筆試參考題庫及答案解析
- 25秋二上語文期末押題卷5套
- 微生物檢驗質(zhì)控措施分析
- 達人分銷合同范本
- 檢修車間定置管理制度(3篇)
- 乘用車內(nèi)部凸出物法規(guī)培訓(xùn)
- 婦科腫瘤保留生育功能治療策略
評論
0/150
提交評論