版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、二叉樹(shù)操作設(shè)計(jì)和實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告一、 目的:掌握二叉樹(shù)的定義、性質(zhì)及存儲(chǔ)方式,各種遍歷算法。一、 要求:采用二叉樹(shù)鏈表作為存儲(chǔ)結(jié)構(gòu),完成二叉樹(shù)的建立,先序、中序和后序以及 按層次遍歷的操作,求所有葉子及結(jié)點(diǎn)總數(shù)的操作。三、實(shí)驗(yàn)內(nèi)容:1、分析、理解程序程序的功能是采用二叉樹(shù)鏈表存儲(chǔ)結(jié)構(gòu),完成二叉樹(shù)的建立,先序、中序和 后序以及按層次遍歷的操作。如輸入二叉樹(shù) ABD#CE#F#,鏈表示意圖如下:2、添加中序和后序遍歷算法=LNR 中序遍歷=void Ino rder(B in Tree T)if(T)Ino rder(T->lchild);prin tf("%c",T->
2、;data); In order(T->rchild);/=LRN 后序遍歷=void Postorder(B in Tree T)if(T)Postorder(T->lchild);Postorder(T->rchild); prin tf("%c",T->data); 3、 調(diào)試程序,設(shè)計(jì)一棵二叉樹(shù),輸入完全二叉樹(shù)的先序序列,用#代表虛結(jié)點(diǎn)(空 指針),如ABD#CE#F#建立二叉樹(shù),求出先序、中序和后序以及按層次遍 歷序列,求所有葉子及結(jié)點(diǎn)總數(shù)。(1) 輸入完全二叉樹(shù)的先序序列 ABD#CE#F#程序運(yùn)行結(jié)果如下:Ci*eat Bin_Ti
3、39;ee ; I npu.t preopdep-口RDtlltltCEMltFtntKK XXX XXX XX Select XtOtXHXHXKXXX1; Prerder Iruepsal2: ITi*au©raal3 i Post&i'dei* t:i*auePE5il4: PostTeeDepthMode number, Leaf nun tier 5: Level Depth0: Exit(2) 先序序列:>int Bin_t>'ee PFeorder! ABDCEFxw昇畀wrxwKxx select xxxxsKSHiWMSKmx1:
4、 Pt'eoi'deE* Ti'auei'sol2 1order Traversal3: Postoi?der traversal4: t'astTt'eebeptlifNode numberLeaf nunhei'5 = Leuel Deptli0: Exit疋豐慎餐且 w 餐豐 unit nitifjtitxitafjijtafjiit/jut*(3) 中序序列:i-int Bin_Tr»o Inopd&r: DBAHCF* seLeet *1! Pl*fe&PdfeP Tl*AUfeI*S:AL2 -1 u
5、i'de i' Ti'auei"s:al3: Postni*dei' ti"avei*s:al4; PostTr&eDcpth. Node nunl>&rr nunb&r 5; Level Depth0: Exit(4) 后序序列:2Print Bin_rPostorder= DBEFClftKmUlCMXKKim gg Jen t 拭其其兀與:其冥其輒其其兀1; Pi'eorder rrauersal2 - lopclet' IrauerAl3: Postapdei* tirauepsatl4:
6、 PosztlvseDptehrHode numbeik*r Leaf numbev- £: Level De pt h a: Exit(5)所有葉子及結(jié)點(diǎn)總數(shù)inTree Depth=3 BinTree Node nunhei1 BinTee Leaf nunibeF=3 貝其員耳算闿耳胄科算 5q 號(hào)qt KlOClOtXXJf KJOC1: Ppeovdep Tvauepsal2- lovder Trauevsal3 * Potovder trauersa14= PostTr'eeDepth,Node nunberLeaf ntiiljer 5: Level Depth
7、0= ExitX X K H K Mi X X X X X H K Mi K *f K K If K K K *f K X Jf 3< Jf Jf K(6)按層次遍歷序列:LeuePrint Bin_Tpee: ABCDEF aeleet mtxzK員xMmtxz1: Ppeapdep T rauei'sal2 :1 n r-de v- Tphu鼻pghl3 : Po st o rdei1 ti*av&尸!:比14: PostTi'-e&Dapth,Node ftumbet*Leaf nunbev S - Leue 1 Dept:It0: Exitmcni
8、c JOCjCaiCICITKKKKKXXimKXXXaiOCKXKXXXBPt*ess any key to ontinue四、源程序代碼#i nclude"stdio.h"#i nclude"stri ng.h"#i nclude"stdlib.h"#defi ne Max 20/結(jié)點(diǎn)的最大個(gè)數(shù)typedef struct nodechar data;struct node *lchild,*rchild;BinTNode;/自定義二叉樹(shù)的結(jié)點(diǎn)類型typedef BinTNode *BinTree;/ 定義二叉樹(shù)的指針int No
9、deNum,leaf;/NodeNum/= 基于先序遍歷算法創(chuàng)建二叉樹(shù) /=要求輸入先序序列,其中加入虛結(jié)點(diǎn)為結(jié)點(diǎn)數(shù),leaf為葉子數(shù)"#"以示空指針的位置=Bi nTree CreatBi nTree(void)Bi nTree T;char ch; if(ch=getchar()='#') return(NULL);/ 讀入 # ,返回空指針else T=(BinTNode *)malloc(sizeof(BinTNode); / 生成結(jié)點(diǎn)T->data=ch;/ 構(gòu)造左子樹(shù)/ 構(gòu)造右子樹(shù)/ 訪問(wèn)結(jié)點(diǎn)/ 先序遍歷左子樹(shù) / 先序遍歷右子樹(shù)T->
10、;lchild=CreatBinTree();T->rchild=CreatBinTree(); return(T);/=NLR 先序遍歷 =void Preorder(BinTree T)if(T) printf("%c",T->data);Preorder(T->lchild);Preorder(T->rchild);/=LNR 中序遍歷 = void Inorder(BinTree T)if(T)Inorder(T->lchild);printf("%c",T->data);Inorder(T->rchil
11、d);/=LRN 后序遍歷 = void Postorder(BinTree T) if(T)Postorder(T->lchild);Postorder(T->rchild);printf("%c",T->data);/= 采用后序遍歷求二叉樹(shù)的深度、結(jié)點(diǎn)數(shù)及葉子數(shù)的遞歸算法 int TreeDepth(BinTree T)int hl,hr,max;if(T)hl=TreeDepth(T->lchild); hr=TreeDepth(T->rchild);max=hl>hr? hl:hr;NodeNum=NodeNum+1;if(hl
12、=0&&hr=0) leaf=leaf+1; return(max+1);else return(0);/= 利用"先進(jìn)先出 "(FIFO)void Levelorder(BinTree T)int front=0,rear=1;BinTNode *cqMax,*p;cq1=T;while(front!=rear)/ 求左深度/ 求右深度/ 取左右深度的最大值/ 求結(jié)點(diǎn)數(shù)/ 若左右深度為 0,即為葉子隊(duì)列,按層次遍歷二叉樹(shù)/ 定義結(jié)點(diǎn)的指針數(shù)組 cq / 根入隊(duì)front=(front+1)%NodeNum;p=cqfront; / 出隊(duì)printf(&qu
13、ot;%c",p->data); / 出隊(duì),輸出結(jié)點(diǎn)的值 if(p->lchild!=NULL)rear=(rear+1)%NodeNum;cqrear=p->lchild; / 左子樹(shù)入隊(duì)if(p->rchild!=NULL)rear=(rear+1)%NodeNum;cqrear=p->rchild; / 右子樹(shù)入隊(duì)/= 主函數(shù) =void main()BinTree root; int i,depth; printf("n");printf("Creat Bin_Treeroot=CreatBinTree(); do
14、Input preorder:"); / 輸入完全二叉樹(shù)的先序序列,/ 用# 代表虛結(jié)點(diǎn),如 ABD#CE#F#/ 創(chuàng)建二叉樹(shù),返回根結(jié)點(diǎn)/ 從菜單中選擇遍歷方式,輸入序號(hào)。printf("t* select*n");printf("t1: Preorder Traversaln");printf("t2: Iorder Traversaln");printf("t3: Postorder traversaln");printf("t4: PostTreeDepth,Node number,Le
15、af numbern");printf("t5: Level Depthn"); / 按層次遍歷之前, 先選擇 4 ,求出該樹(shù)的結(jié)點(diǎn) 數(shù)。printf("t0: Exitn");printf("t*n");scanf("%d",&i); / 輸入菜單序號(hào)( 0-5 )switch (i)case 1: printf("Print Bin_tree Preorder: "); Preorder(root); / 先序遍歷break;case 2: printf("Print Bin_Tree Inorder: ");Inorder(root); / 中序遍歷 break;case 3: printf("Print Bin_Tree Postorder: ");Postorder(root); / 后序遍歷break;case 4: depth=TreeDepth(root);/ 求樹(shù)的深度及葉子數(shù)printf("
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)旅游度假區(qū)招投標(biāo)申請(qǐng)表
- 社會(huì)保險(xiǎn)管理與城市規(guī)劃
- 石油化工設(shè)備使用與管理
- 水上樂(lè)園水電布線施工合同
- 農(nóng)村燃?xì)鈧€(gè)人承包施工合同
- 2024年跨國(guó)醫(yī)療設(shè)備采購(gòu)與技術(shù)支持合同
- 2024年河南漯河事業(yè)單位選拔100位人才3篇
- 2024年鏟車安全巡查記錄表3篇
- 2025年度跨境電商擔(dān)保抵押合同范本2篇
- 2025版物流園區(qū)土地及建筑物租賃承包協(xié)議3篇
- 采購(gòu)合同范例壁布
- 公司員工出差車輛免責(zé)協(xié)議書(shū)
- 2024年陜西榆林市神木市公共服務(wù)輔助人員招聘775人歷年管理單位遴選500模擬題附帶答案詳解
- 2024年度抖音短視頻拍攝制作服務(wù)合同范本3篇
- 2024-2025學(xué)年高二上學(xué)期期末數(shù)學(xué)試卷(提高篇)(含答案)
- 安全生產(chǎn)事故案例分析
- 2024年07月22208政治學(xué)原理期末試題答案
- 期末檢測(cè)卷(一)(試卷)-2024-2025學(xué)年外研版(三起)英語(yǔ)六年級(jí)上冊(cè)(含答案含聽(tīng)力原文無(wú)音頻)
- 《客戶開(kāi)發(fā)技巧》課件
- 《防范于心反詐于行》中小學(xué)防范電信網(wǎng)絡(luò)詐騙知識(shí)宣傳課件
- 口腔執(zhí)業(yè)醫(yī)師定期考核試題(資料)帶答案
評(píng)論
0/150
提交評(píng)論