版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)四二叉樹(shù)的操作班級(jí):計(jì)算機(jī)10()2班姓名:唐自鴻學(xué)號(hào):完畢日期:2023.6.14題目:對(duì)于給定的一二叉樹(shù),實(shí)現(xiàn)各種約定的遍歷。一、實(shí)驗(yàn)?zāi)康模海?)掌握二叉樹(shù)的定義和存儲(chǔ)表達(dá),學(xué)會(huì)建立一棵特定二叉樹(shù)的方法;(2)掌握二叉樹(shù)的遍歷算法(先序、中序、后序遍歷算法)的思想,并學(xué)會(huì)遍歷算法的遞歸實(shí)現(xiàn)和非遞歸實(shí)現(xiàn)。二、實(shí)驗(yàn)內(nèi)容:構(gòu)造二叉樹(shù),再實(shí)現(xiàn)二叉樹(shù)的先序、中序、后序遍歷,最后記錄二叉樹(shù)的深度。三、實(shí)驗(yàn)環(huán)節(jié):(一)需求分析.二叉樹(shù)的建立一方面要建立一個(gè)二叉鏈表的結(jié)構(gòu)體,包含根節(jié)點(diǎn)和左右子樹(shù)。由于樹(shù)的每一個(gè)左右子樹(shù)又是一顆二叉樹(shù),所以用遞歸的方法來(lái)建立其左右子樹(shù)。二叉樹(shù)的遍歷是一種把二叉樹(shù)的每一個(gè)節(jié)點(diǎn)訪問(wèn)并輸出的過(guò)程,遍歷時(shí)根結(jié)點(diǎn)與左右孩子的輸出順序構(gòu)成了不同的遍歷方法,這個(gè)過(guò)程需要按照不同的遍歷的方法,先輸出根結(jié)點(diǎn)還是先輸出左右孩子,可以用選擇語(yǔ)句來(lái)實(shí)現(xiàn)。.程序的執(zhí)行命令為:1)構(gòu)造結(jié)點(diǎn)類(lèi)型,然后創(chuàng)建二又樹(shù)。2)根據(jù)提醒,從鍵盤(pán)輸入各個(gè)結(jié)點(diǎn)。3)通過(guò)選擇一種方式(先序、中序或者后序)遍歷。4)輸出結(jié)果,結(jié)束。(二)概要設(shè)計(jì)1.二叉樹(shù)的二叉鏈表結(jié)點(diǎn)存儲(chǔ)類(lèi)型定義typedefstructNodeDataTypedata;
PostOrder(root->LChi1d);PostOrder(root—>RChi1d);Visit(root—>data);))intPostTreeDepth(BitTreebt)(inthl,hr,max;if(bt!=NULL){hl=PostTreeDepth(bt—>LChild):hr=PostTreeDepth(bt->RChild);max=hl>hr?hI:hr;return(max+1);)elsereturn(0);〃求二叉樹(shù)的深度〃求二叉樹(shù)的深度〃求二叉樹(shù)的深度〃求左子樹(shù)的深度//求右子樹(shù)的深度〃得到左、右子樹(shù)深度較大者〃返回樹(shù)的深度//假如是空樹(shù),則返回〃求二叉樹(shù)的深度〃求左子樹(shù)的深度//求右子樹(shù)的深度〃得到左、右子樹(shù)深度較大者〃返回樹(shù)的深度//假如是空樹(shù),則返回0inth;intlayer;inttreeleaf;1ayer=0;printf("請(qǐng)輸入二叉樹(shù)中的元素(以擴(kuò)展先序遍歷序列輸入,其中.代表空子樹(shù)):\rT);OreatBiTree(&T):printf("先序遍歷序列為:");PreOrder(T);printf("\n中序遍歷序列為:");InOrder(T):printf("\n后序遍歷序列為:");PostOrder(T);h=PostTreeDepth(T);printf("\n");printf("此二義樹(shù)的深度為:%小斤'刈;}structNode*LChild;structNode*RChi1d;JBitNode,*BitTree;.建立如下圖所示二叉樹(shù):voidCreatBiTree(BitTree*bt)用擴(kuò)展先序遍歷序列創(chuàng)建二叉樹(shù),假如是當(dāng)前樹(shù)根置為空,否則申請(qǐng)一個(gè)新節(jié)點(diǎn)。.本程序包含四個(gè)模塊1)主程序模塊:2)先序遍歷模塊3)中序遍歷模塊4)后序遍歷模塊(三)具體設(shè)計(jì).建立二又樹(shù)存儲(chǔ)類(lèi)型〃=========4勾造二叉樹(shù)=======voidCreatBiTree(BitTree*bt)〃用擴(kuò)展先序遍歷序列創(chuàng)建二叉樹(shù),假如是當(dāng)前樹(shù)根置為空,否則申請(qǐng)一個(gè)新節(jié)點(diǎn)//{Charch;ch=getchar();if(ch==,./)*bt=NULL;else*bt=(BitTree)ma1Ioc(sizeof(BitNode));//申請(qǐng)一段關(guān)于該節(jié)點(diǎn)類(lèi)型的存儲(chǔ)空間(*bt)—>data=ch;〃生成根結(jié)點(diǎn)CreatBiTree(&((*bt)->LChild));〃構(gòu)造左子樹(shù)CreatBiTree(&((*bt)->RChi1d));〃構(gòu)造右子樹(shù))).編程實(shí)現(xiàn)以上二叉樹(shù)的前序、中序和后序遍歷操作,輸出遍歷序列1)先序遍歷二叉樹(shù)的遞歸算法如下:voidPreOrder(BitTreeroot)(if(root!=NULL)(Visit(root—>data);Pre0rder(root->LChild);//遞歸調(diào)用核心Pre0rder(root—>RChi1d);))2)中序遍歷二叉樹(shù)的遞歸算法如下:voidIn0rder(BitTreeroot)(if(root!=NULL)InOrder(root->LChild);Visit(root->data);1nOrder(root->RChild);))3)后序遍歷二叉樹(shù)的遞歸算法如下:voidPostOrder(BitTreeroot)(if(root!=NULL)(PostOrder(root->LChiId):Pos10rder(root->RChiId);Visit(root->data);})4)計(jì)算二叉樹(shù)的深度算法如下:intPostTreeDepth(BitTreebt)//求二叉樹(shù)的深度inthl,hr.max;if(bt!=NULL)(hl=PostTreeDepth(bt->LChild);〃求左子樹(shù)的深度hr=PostTreeDepth(bt->RChild);//求右子樹(shù)的深度max=hl>hr?hl:hr;//得到左、右子樹(shù)深度較大者〃返回樹(shù)的深度return(max+1);
elsereturn(0);〃返回樹(shù)的深度elsereturn(0);elsereturn(0);//假如是空樹(shù),則返回0四、調(diào)試分析及測(cè)試結(jié)果elsereturn(0);//假如是空樹(shù),則返回0.進(jìn)入演示程序后的顯示主界面:請(qǐng)輸入二叉樹(shù)中的元素;先序、中序和后序遍歷分別輸出結(jié)果。.測(cè)試結(jié)果以擴(kuò)展先序遍歷序列輸入,其中.代表空子樹(shù):ABC..DE.G..F...先序遍歷序列為:ABCDEGF中序遍歷序列為:CBEGDFA后序遍歷序列為:CGEFDBA此二叉樹(shù)的深度為:5.程序運(yùn)營(yíng)結(jié)果1)輸入二叉樹(shù)中的元素(以擴(kuò)展先序遍歷序列輸入,其中.代表空子樹(shù)),顯示截圖為:?*C:\ProgramFiles(x86)\MicrosoftVisualStudio\MyProjects\ee\Debug\ee.exe"請(qǐng)輸入二叉樹(shù)中的元素V以擴(kuò)展先序遍歷序列輸入.其中.代表空"子樹(shù)):圖一2)輸出結(jié)果,顯示界面為:
S3■"C:\ProgramFiles(x86)\MicrosoftVisualStudio\MyPrqiects\ee\Debug\ee.exe"八S3八.Disw叉wc.tylyij-八.Disw八.Disw叉wc.tylyij-G..F...萬(wàn)莊列為:ABCDEGF力序歹?為:CBEGDFA無(wú)序歹J為:CGEFDBA用的深度為邙anykeytocontinue圖二4.調(diào)試分析:本程序通過(guò)度別調(diào)用先序遍歷、中序遍歷以及后序遍歷函數(shù)對(duì)二叉樹(shù)中的元素進(jìn)行遍歷,整個(gè)程序基本滿足實(shí)驗(yàn)規(guī)定,但是在一些細(xì)節(jié)問(wèn)題上面還是存在缺陷,比如大小寫(xiě)字母不同也會(huì)導(dǎo)致程序無(wú)法運(yùn)營(yíng),這就需要我們?cè)诮鉀Q問(wèn)題上認(rèn)真細(xì)致,尚有就是程序并不是很完善,總之,我會(huì)在此后更加努力,是程序更完美。六、實(shí)驗(yàn)總結(jié).二叉樹(shù)對(duì)于進(jìn)行表達(dá)式的前綴,中綴和后綴的表達(dá)有明顯的優(yōu)勢(shì),既方便,又容易理解。其先序,中序和后序分別相應(yīng)這表達(dá)式的前綴,中綴和后綴。.在建樹(shù)與進(jìn)行樹(shù)的遍歷的時(shí)候一定要理解其建樹(shù)與遍歷的整個(gè)過(guò)程。不然就會(huì)連為什么這樣做都不知道。在遍歷樹(shù)的時(shí)候最常用到的就是棧的結(jié)構(gòu)了(非遞歸)。.本次實(shí)驗(yàn)讓我更加了解了哈夫曼樹(shù)的構(gòu)造和生成方法,以及如何用順序結(jié)構(gòu)來(lái)存儲(chǔ)哈夫曼樹(shù)及構(gòu)樹(shù)過(guò)程的信息,如何進(jìn)行編碼、譯碼。也感知到模塊程序設(shè)計(jì)在大程序設(shè)計(jì)使用中的普遍性,該實(shí)驗(yàn)是最佳的證明,通過(guò)模塊程序設(shè)計(jì),能使程序可讀可寫(xiě)性明顯加強(qiáng)。通過(guò)本次實(shí)驗(yàn),使我初步掌握了二叉樹(shù)的結(jié)構(gòu)特性以及各種存儲(chǔ)的結(jié)構(gòu)的特點(diǎn)和合用范圍,掌握了哈夫曼樹(shù)的定義和思想,初步掌握了用凹入法顯示樹(shù)。但是程序仍有樹(shù)的顯示不夠完善的缺陷,在此后的學(xué)習(xí)中,我會(huì)不斷學(xué)習(xí),在學(xué)習(xí)中注意改變。附錄源程序清單:include<stdio.h>include<stdlib.h>inc1ude<ma1Ioc.h>incIude<conio.h>typedefintDataType;typedefstructNode〃創(chuàng)建結(jié)點(diǎn)類(lèi)型結(jié)構(gòu)體(DataTypedata;structNode*LChild;structNode*RChild;}BitNode,*BitTree;voidCreatBiTree(BitTree*bt)//用擴(kuò)展先序遍歷序列創(chuàng)建二叉樹(shù),假如是當(dāng)前樹(shù)根置為空,否則申請(qǐng)一個(gè)新節(jié)點(diǎn)//{charch;ch=getchar();if(ch==z.')*bt=NULL;else(*bt=(BitTreeJmalloc(sizeof(BitNode));(*bt)->data=ch;CreatBiTree(&((*bt)—>LChild));CreatBiTree(&((*bt)->RChild));))voidvisit(charch)〃訪問(wèn)根節(jié)點(diǎn)printf("%cM,ch);voidPreOrder(BitTreeroot)//先序遍歷二叉樹(shù)的遞歸算法(if(root!=NULL){Visit(root—>data);PreOrder(root->LChi1d);PreOrder(roo
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度坡屋面小青瓦施工質(zhì)量監(jiān)督與整改服務(wù)合同
- 二零二五年度新加坡留學(xué)就業(yè)輔導(dǎo)合同4篇
- 2025專(zhuān)業(yè)級(jí)防雷系統(tǒng)設(shè)計(jì)與施工監(jiān)管合同3篇
- 商場(chǎng)自動(dòng)扶梯安裝與維護(hù)服務(wù)合同(2025年度)
- 二零二五版羅絲與楊洋的離婚協(xié)議及財(cái)產(chǎn)分割及子女撫養(yǎng)協(xié)議4篇
- 2025年度家具退貨及維修保養(yǎng)服務(wù)協(xié)議范本
- 2025版GB∕T30057(環(huán)保)固體廢物處理與資源化利用合同3篇
- 二零二五年度歷史文化遺址草坪保護(hù)與旅游合同3篇
- 二零二五年度醫(yī)療信息化系統(tǒng)建設(shè)與維護(hù)合同2篇
- 2025版新型綠色建筑勞務(wù)分包合同范本3篇
- 副總經(jīng)理招聘面試題與參考回答(某大型國(guó)企)2024年
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 2024-2030年中國(guó)智慧水務(wù)行業(yè)應(yīng)用需求分析發(fā)展規(guī)劃研究報(bào)告
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 中醫(yī)護(hù)理人文
- 2024-2030年中國(guó)路亞用品市場(chǎng)銷(xiāo)售模式與競(jìng)爭(zhēng)前景分析報(bào)告
- 貨物運(yùn)輸安全培訓(xùn)課件
- 前端年終述職報(bào)告
- 2024小說(shuō)推文行業(yè)白皮書(shū)
- 市人民醫(yī)院關(guān)于開(kāi)展“改善就醫(yī)感受提升患者體驗(yàn)主題活動(dòng)”2023-2025年實(shí)施方案及資料匯編
評(píng)論
0/150
提交評(píng)論