版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、二叉樹操作設(shè)計和實現(xiàn)實驗報告一、 目的:掌握二叉樹的定義、性質(zhì)及存儲方式,各種遍歷算法。一、 要求:采用二叉樹鏈表作為存儲結(jié)構(gòu),完成二叉樹的建立,先序、中序和后序以及 按層次遍歷的操作,求所有葉子及結(jié)點總數(shù)的操作。三、實驗內(nèi)容:1、分析、理解程序程序的功能是采用二叉樹鏈表存儲結(jié)構(gòu),完成二叉樹的建立,先序、中序和 后序以及按層次遍歷的操作。如輸入二叉樹 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è)計一棵二叉樹,輸入完全二叉樹的先序序列,用#代表虛結(jié)點(空 指針),如ABD#CE#F#建立二叉樹,求出先序、中序和后序以及按層次遍 歷序列,求所有葉子及結(jié)點總數(shù)。(1) 輸入完全二叉樹的先序序列 ABD#CE#F#程序運行結(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é)點總數(shù)inTree Depth=3 BinTree Node nunhei1 BinTee Leaf nunibeF=3 貝其員耳算闿耳胄科算 5q 號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é)點的最大個數(shù)typedef struct nodechar data;struct node *lchild,*rchild;BinTNode;/自定義二叉樹的結(jié)點類型typedef BinTNode *BinTree;/ 定義二叉樹的指針int No
9、deNum,leaf;/NodeNum/= 基于先序遍歷算法創(chuàng)建二叉樹 /=要求輸入先序序列,其中加入虛結(jié)點為結(jié)點數(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é)點T->data=ch;/ 構(gòu)造左子樹/ 構(gòu)造右子樹/ 訪問結(jié)點/ 先序遍歷左子樹 / 先序遍歷右子樹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);/= 采用后序遍歷求二叉樹的深度、結(jié)點數(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);/= 利用"先進先出 "(FIFO)void Levelorder(BinTree T)int front=0,rear=1;BinTNode *cqMax,*p;cq1=T;while(front!=rear)/ 求左深度/ 求右深度/ 取左右深度的最大值/ 求結(jié)點數(shù)/ 若左右深度為 0,即為葉子隊列,按層次遍歷二叉樹/ 定義結(jié)點的指針數(shù)組 cq / 根入隊front=(front+1)%NodeNum;p=cqfront; / 出隊printf(&qu
13、ot;%c",p->data); / 出隊,輸出結(jié)點的值 if(p->lchild!=NULL)rear=(rear+1)%NodeNum;cqrear=p->lchild; / 左子樹入隊if(p->rchild!=NULL)rear=(rear+1)%NodeNum;cqrear=p->rchild; / 右子樹入隊/= 主函數(shù) =void main()BinTree root; int i,depth; printf("n");printf("Creat Bin_Treeroot=CreatBinTree(); do
14、Input preorder:"); / 輸入完全二叉樹的先序序列,/ 用# 代表虛結(jié)點,如 ABD#CE#F#/ 創(chuàng)建二叉樹,返回根結(jié)點/ 從菜單中選擇遍歷方式,輸入序號。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 ,求出該樹的結(jié)點 數(shù)。printf("t0: Exitn");printf("t*n");scanf("%d",&i); / 輸入菜單序號( 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ù)printf("
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度中醫(yī)特色療法師承教育合作協(xié)議4篇
- 2025年度綠色建筑設(shè)計競賽與成果轉(zhuǎn)化合同gf02093篇
- 2025年汽車維修行業(yè)學(xué)徒就業(yè)培訓(xùn)合同3篇
- 2025年度綠色能源柴油貿(mào)易合同范本4篇
- 2025年度柴油運輸安全應(yīng)急響應(yīng)預(yù)案合同范本4篇
- 2025年香港酒店協(xié)議價調(diào)整與客戶權(quán)益保障協(xié)議3篇
- 骨痛貼治療前列腺癌骨轉(zhuǎn)移癌痛的臨床前研究
- 旋轉(zhuǎn)式數(shù)位開關(guān)行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 中國RFID汽車電子標識行業(yè)市場深度評估及投資戰(zhàn)略規(guī)劃報告
- 2025至2031年中國新型排污閥行業(yè)投資前景及策略咨詢研究報告
- (二統(tǒng))大理州2025屆高中畢業(yè)生第二次復(fù)習(xí)統(tǒng)一檢測 物理試卷(含答案)
- 口腔執(zhí)業(yè)醫(yī)師定期考核試題(資料)帶答案
- 2024人教版高中英語語境記單詞【語境記單詞】新人教版 選擇性必修第2冊
- 能源管理總結(jié)報告
- 充電樁巡查記錄表
- 阻燃材料的阻燃機理建模
- CJT 511-2017 鑄鐵檢查井蓋
- 配電工作組配電網(wǎng)集中型饋線自動化技術(shù)規(guī)范編制說明
- 2024高考物理全國乙卷押題含解析
- 介入科圍手術(shù)期護理
- 青光眼術(shù)后護理課件
評論
0/150
提交評論