二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告(c語(yǔ)言編寫(xiě)-附源代碼)_第1頁(yè)
二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告(c語(yǔ)言編寫(xiě)-附源代碼)_第2頁(yè)
二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告(c語(yǔ)言編寫(xiě)-附源代碼)_第3頁(yè)
二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告(c語(yǔ)言編寫(xiě)-附源代碼)_第4頁(yè)
二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告(c語(yǔ)言編寫(xiě)-附源代碼)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上二叉樹(shù)的建立與遍歷實(shí)驗(yàn)報(bào)告 級(jí) 班 年 月 日 姓名 學(xué)號(hào)_ 1實(shí)驗(yàn)題目建立一棵二叉樹(shù),并對(duì)其進(jìn)行遍歷(先序、中序、后序),打印輸出遍歷結(jié)果。2需求分析本程序用VC編寫(xiě),實(shí)現(xiàn)建立一棵二叉樹(shù)的功能,并對(duì)其進(jìn)行遍歷(先序、中序、后序),并且打印輸出遍歷結(jié)果。 輸入的形式和輸入值的范圍: 輸入二叉樹(shù)的先序,當(dāng)其結(jié)點(diǎn)為空時(shí),需要輸入#。(輸入的先序僅含字母和#) 輸出的形式:輸出二叉樹(shù)的先序、中序、后序。 程序所能達(dá)到的功能:實(shí)現(xiàn)建立一棵二叉樹(shù)的功能,并對(duì)其進(jìn)行遍歷(先序、中序、 后序),并且打印輸出遍歷結(jié)果。 測(cè)試數(shù)據(jù):輸入數(shù)據(jù):輸入ABC#DE#G#F#輸出結(jié)果:二叉樹(shù)的

2、先序遍歷為:ABCDEGF二叉樹(shù)的中序遍歷為:CBEGDFA二叉樹(shù)的后序遍歷為:CGEFDBA3概要設(shè)計(jì)1) 為了實(shí)現(xiàn)上述程序功能,需要定義二叉鏈表的抽象數(shù)據(jù)類(lèi)型:typedef struct BinaryTreeNode TElemType data;/二叉樹(shù)結(jié)點(diǎn)中的數(shù)據(jù)域 struct BinaryTreeNode *lchild , *rchild; /二叉樹(shù)結(jié)點(diǎn)的左孩子和右孩子指針BinaryTreeNode ,*BiTree;基本操作:A. void CreateBinaryTree (BiTree &T) 初始條件:無(wú)操作結(jié)果:建立了二叉樹(shù)。B. void PreOrder

3、(BiTree T) 初始條件:存在一棵二叉樹(shù)操作結(jié)果:先序遍歷二叉樹(shù),并且輸出先序遍歷的結(jié)果。C. void MidOrder(BiTree T)初始條件:存在一棵二叉樹(shù)操作結(jié)果:中序遍歷二叉樹(shù),并且輸出中序遍歷的結(jié)果。D. void PostOrder(BiTree T)初始條件:存在一棵二叉樹(shù)操作結(jié)果:后序遍歷二叉樹(shù),并且輸出后序遍歷的結(jié)果。程序包含5個(gè)函數(shù):主函數(shù)main()先序建立二叉樹(shù) void CreateBinaryTree (BiTree &T)先序遍歷二叉樹(shù),并且輸出先序遍歷的結(jié)果 void PreOrder(BiTree T); 中序遍歷二叉樹(shù),并且輸出中序遍歷的

4、結(jié)果 void MidOrder(BiTree T);序遍歷二叉樹(shù),并且輸出后序遍歷的結(jié)果 void PostOrder(BiTree T);主函數(shù)main()CreateBinaryTreePreOrderMidOrderPostOrder各函數(shù)間關(guān)系如下:4詳細(xì)設(shè)計(jì)1) 二叉鏈表的定義typedef struct BinaryTreeNode定義一個(gè)樹(shù)結(jié)點(diǎn)的數(shù)據(jù)域;定義一個(gè)該結(jié)點(diǎn)的左孩子指針和右孩子指針;2) void CreateBinaryTree (BiTree &T)/先序建立二叉樹(shù) 輸入一個(gè)字符量;if(輸入字符= '#') T指針置值為NULL;else

5、 動(dòng)態(tài)申請(qǐng)一個(gè)指向二叉樹(shù)結(jié)構(gòu)體的指針 把輸入字符賦值給新指針的數(shù)據(jù)域data; 調(diào)用CreateBinaryTree(新指針的lchild成員); 調(diào)用CreateBinaryTree(新指針的rchild成員); 3) void PreOrder(BiTree T) /先序遍歷二叉樹(shù) if(T指針不為NULL)輸出T的data域;先序遍歷左子樹(shù); 先序遍歷右子樹(shù);4) void MidOrder(BiTree T) /中序遍歷二叉樹(shù) if(T指針不為NULL)中序遍歷左子樹(shù);輸出T的data域;中序遍歷右子樹(shù);5) void PostOrder(BiTree T) /中序遍歷二叉樹(shù) if(T

6、指針不為NULL) 后序遍歷左子樹(shù);后序遍歷右子樹(shù);輸出T的data域;5調(diào)試分析在編寫(xiě)程序過(guò)程中,我將scanf(”%c”,&ch)中的%c寫(xiě)成%d,程序運(yùn)行了一段時(shí)間沒(méi)有結(jié)果,經(jīng)過(guò)檢查,發(fā)現(xiàn)了這個(gè)錯(cuò)誤。編寫(xiě)程序不能有一點(diǎn)馬虎,否則后續(xù)糾錯(cuò)工作很辛苦,編寫(xiě)程序的進(jìn)度變慢。6使用說(shuō)明程序名為:二叉樹(shù)遍歷.exe,運(yùn)行環(huán)境為DOS。程序執(zhí)行后顯示輸入字符,先序建立二叉樹(shù):此時(shí)請(qǐng)輸入一棵二叉樹(shù)的先序,并且當(dāng)結(jié)點(diǎn)為空時(shí),輸入#輸入完成后,會(huì)輸出該二叉樹(shù)的先序遍歷、中序遍歷和后序遍歷7測(cè)試結(jié)果1) 輸入數(shù)據(jù):輸入ABC#DE#G#F#輸出結(jié)果:二叉樹(shù)的先序遍歷為:ABCDEGF二叉樹(shù)的中序遍歷

7、為:CBEGDFA二叉樹(shù)的后序遍歷為:CGEFDBA2) 輸入數(shù)據(jù):輸入AB#C#輸出結(jié)果:二叉樹(shù)的先序遍歷為:ABC二叉樹(shù)的中序遍歷為:BAC二叉樹(shù)的后序遍歷為:BCA3) 二叉樹(shù)如下:先序輸入這棵二叉樹(shù),程序運(yùn)行結(jié)果為:程序源代碼:#include<stdio.h>#include<stdlib.h>typedef char TElemType;typedef struct BinaryTreeNode/二叉鏈表的存儲(chǔ)結(jié)構(gòu)TElemType data;struct BinaryTreeNode *lchild , *rchild;BinaryTreeNode ,*B

8、iTree;void CreateBinaryTree (BiTree &T)/先序建立二叉樹(shù) char ch;scanf("%c",&ch);if(ch = '#') T=NULL;else if(!(T = (BinaryTreeNode *)malloc (sizeof(BinaryTreeNode) exit (-1);/判斷malloc函數(shù)是否獲得符合要求的內(nèi)存塊,是則繼續(xù)程序,否則使用exit函數(shù)強(qiáng)制退出程序/如果malloc函數(shù)無(wú)法獲得符合要求的內(nèi)存塊,malloc函數(shù)會(huì)返回NULL指針T->data=ch;CreateB

9、inaryTree(T->lchild);CreateBinaryTree(T->rchild);void PreOrder(BiTree T)/先序遍歷二叉樹(shù)if(T)printf("%c ",T->data);PreOrder(T->lchild); PreOrder(T->rchild);void MidOrder(BiTree T)/中序遍歷二叉樹(shù)if(T)MidOrder(T->lchild);printf("%c ",T->data);MidOrder(T->rchild);void PostOrder(BiTree T)/后序遍歷二叉樹(shù)if(T)PostOrder(T->lchild);PostOrder(T->rchild);printf("%c ",T->data);void main()BiTree Tree;printf("輸入字符,先序建立二叉樹(shù):n");CreateBinaryTree(Tree);printf("二叉樹(shù)的先序

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論