




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)報(bào)告題目:編寫一個(gè)二叉樹遍歷演示程序。班級(jí):軟件(2)姓名:===學(xué)號(hào):0925115025完成日期:2011.5.11需求分析1.(1)給出一棵二叉樹的中序與后序遍歷序列,求出它的先序遍歷序列。(2)給出一棵二叉樹的中序與先序遍歷序列,求出它的后序遍歷序列。測(cè)試數(shù)據(jù)如下:已知二叉樹的中序與后序序列,求先序序列,請(qǐng)先輸入中序序列,回車后輸入后序序列:例如輸入:DGBAECHFGDBEHFCA輸出:先序遍歷結(jié)果:ABDGCEFH中序遍歷結(jié)果:DGBAECHF后序遍歷結(jié)果:GDBEHFCA已知二叉樹的先序與中序序列,求后序序列,請(qǐng)先輸入先序序列,回車后輸入中序序列:例如輸入:abdefgcdebgfac輸出:先序遍歷結(jié)果:abdefgc中序遍歷結(jié)果:debgfac后序遍歷結(jié)果:edgfbca詳細(xì)設(shè)計(jì)構(gòu)造二叉樹結(jié)點(diǎn)voidTreeFromMidPost(LPBINARY_TREE_NODE&lpNode,stringmid,stringpost,intlm,intrm,intlp,intrp){//構(gòu)造二叉樹結(jié)點(diǎn)lpNode=newBINARY_TREE_NODE;lpNode->data=post[rp];lpNode->pLeftChild=NULL;lpNode->pRightChild=NULL;intpos=lm;while(mid[pos]!=post[rp]){pos++;}intiLeftChildLen=pos-lm;if(pos>lm)//有左孩子,遞歸構(gòu)造左子樹{TreeFromMidPost(lpNode->pLeftChild,mid,post,lm,pos-1,lp,lp+iLeftChildLen-1);}if(pos<rm)//有右孩子,遞歸構(gòu)造右子樹{TreeFromMidPost(lpNode->pRightChild,mid,post,pos+1,rm,lp+iLeftChildLen,rp-1);}}二叉樹的操作//先序遍歷voidPreOrder(LPBINARY_TREE_NODEp){if(p!=NULL){cout<<p->data;//輸出該結(jié)點(diǎn)PreOrder(p->pLeftChild);//遍歷左子樹PreOrder(p->pRightChild);//遍歷右子樹}}//中序遍歷voidMidOrder(LPBINARY_TREE_NODEp){if(p!=NULL){MidOrder(p->pLeftChild);//遍歷左子樹cout<<p->data;//輸出該結(jié)點(diǎn)MidOrder(p->pRightChild);//遍歷右子樹}}//后序遍歷voidPostOrder(LPBINARY_TREE_NODEp){if(p!=NULL){PostOrder(p->pLeftChild);//遍歷左子樹PostOrder(p->pRightChild);//遍歷右子樹cout<<p->data;//輸出該結(jié)點(diǎn)}}//釋放二叉樹voidRelease(LPBINARY_TREE_NODElpNode){if(lpNode!=NULL){Release(lpNode->pLeftChild);Release(lpNode->pRightChild);deletelpNode;lpNode=NULL;}}完整的程序代碼#include<iostream>#include<string>usingnamespacestd;typedefcharDATA_TYPE;typedefstructtagBINARY_TREE_NODEBINARY_TREE_NODE,*LPBINARY_TREE_NODE;structtagBINARY_TREE_NODE{DATA_TYPEdata;//節(jié)點(diǎn)數(shù)據(jù)LPBINARY_TREE_NODEpLeftChild;//左孩子指針LPBINARY_TREE_NODEpRightChild;//右孩子指針};//函數(shù)功能:給出一棵二叉樹的中序與后序序列,構(gòu)造這棵二叉樹。//輸入?yún)?shù):LPBINARY_TREE_NODE&lpNode:二叉樹的結(jié)點(diǎn)//stringmid:存儲(chǔ)了二叉樹的中序序列的字符串//stringpost:存儲(chǔ)了二叉樹的后序序列的字符串//intlm,intrm:二叉樹的中序序列在數(shù)組mid中的左右邊界//intlp,intrp:二叉樹的后序序列在數(shù)組post中的左右邊界//voidTreeFromMidPost(LPBINARY_TREE_NODE&lpNode,stringmid,stringpost,intlm,intrm,intlp,intrp){//構(gòu)造二叉樹結(jié)點(diǎn)lpNode=newBINARY_TREE_NODE;lpNode->data=post[rp];lpNode->pLeftChild=NULL;lpNode->pRightChild=NULL;intpos=lm;while(mid[pos]!=post[rp]){pos++;}intiLeftChildLen=pos-lm;if(pos>lm)//有左孩子,遞歸構(gòu)造左子樹{TreeFromMidPost(lpNode->pLeftChild,mid,post,lm,pos-1,lp,lp+iLeftChildLen-1);}if(pos<rm)//有右孩子,遞歸構(gòu)造右子樹{TreeFromMidPost(lpNode->pRightChild,mid,post,pos+1,rm,lp+iLeftChildLen,rp-1);}}//函數(shù)功能:給出一棵二叉樹的先序與中序序列,構(gòu)造這棵二叉樹。//輸入?yún)?shù):BINARY_TREE_NODE&lpNode:二叉樹的結(jié)點(diǎn)//stringmid:存儲(chǔ)了二叉樹的中序序列的字符串//stringpre:存儲(chǔ)了二叉樹的先序序列的字符串//intlm,intrm:二叉樹的中序序列在數(shù)組mid中的左右邊界//intlp,intrp:二叉樹的先序序列在數(shù)組pre中的左右邊界//voidTreeFromMidPre(LPBINARY_TREE_NODE&lpNode,stringmid,stringpre,intlm,intrm,intlp,intrp){//構(gòu)造二叉樹結(jié)點(diǎn)lpNode=newBINARY_TREE_NODE;lpNode->data=pre[lp];lpNode->pLeftChild=NULL;lpNode->pRightChild=NULL;intpos=lm;while(mid[pos]!=pre[lp]){pos++;}intiLeftChildLen=pos-lm;if(pos>lm)//有左孩子,遞歸構(gòu)造左子樹{TreeFromMidPre(lpNode->pLeftChild,mid,pre,lm,pos-1,lp+1,lp+iLeftChildLen);}if(pos<rm)//有右孩子,遞歸構(gòu)造右子樹{TreeFromMidPre(lpNode->pRightChild,mid,pre,pos+1,rm,lp+iLeftChildLen+1,rp);}}//先序遍歷voidPreOrder(LPBINARY_TREE_NODEp){if(p!=NULL){cout<<p->data;//輸出該結(jié)點(diǎn)PreOrder(p->pLeftChild);//遍歷左子樹PreOrder(p->pRightChild);//遍歷右子樹}}//中序遍歷voidMidOrder(LPBINARY_TREE_NODEp){if(p!=NULL){MidOrder(p->pLeftChild);//遍歷左子樹cout<<p->data;//輸出該結(jié)點(diǎn)MidOrder(p->pRightChild);//遍歷右子樹}}//后序遍歷voidPostOrder(LPBINARY_TREE_NODEp){if(p!=NULL){PostOrder(p->pLeftChild);//遍歷左子樹PostOrder(p->pRightChild);//遍歷右子樹cout<<p->data;//輸出該結(jié)點(diǎn)}}//釋放二叉樹voidRelease(LPBINARY_TREE_NODElpNode){if(lpNode!=NULL){Release(lpNode->pLeftChild);Release(lpNode->pRightChild);deletelpNode;lpNode=NULL;}}intmain(intargc,char*argv[]){stringpre;//存儲(chǔ)先序序列stringmid;//存儲(chǔ)中序序列stringpost;//存儲(chǔ)后序序列LPBINARY_TREE_NODElpRoot;//二叉樹根節(jié)點(diǎn)指針cout<<"程序1已知二叉樹的中序與后序序列,求先序序列"<<endl;cout<<"請(qǐng)先輸入中序序列,回車后輸入后序序列:"<<endl;cin>>mid;cin>>post;TreeFromMidPost(lpRoot,mid,post,0,mid.size()-1,0,post.size()-1);cout<<"先序遍歷結(jié)果:";PreOrder(lpRoot);cout<<endl;cout<<"中序遍歷結(jié)果:";MidOrder(lp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題2.10 函數(shù)的綜合應(yīng)用(解析版)-2024年高考數(shù)學(xué)一輪復(fù)習(xí)精講精練寶典(新高考專用)
- 車間地基施工方案
- 景觀塔施工方案
- 互聯(lián)網(wǎng)電商知識(shí)培訓(xùn)課件
- 印刷制作設(shè)計(jì)合同范例
- 吉首售房合同范例
- 2025年英語(yǔ) 英語(yǔ)五官標(biāo)準(zhǔn)課件
- 壓手續(xù)不押車合同范例
- 腦疝的護(hù)理診斷及護(hù)理問題
- 豐富多樣的幼兒園節(jié)日慶典計(jì)劃
- 高中地理 選擇性必修二 紐約的發(fā)展 紐約的輻射功能 城市的輻射功能 課件(第2課時(shí))
- 抽油井示功圖分析以及應(yīng)用
- 新藥發(fā)明簡(jiǎn)史
- 培優(yōu)的目的及作用
- 高分子物理化學(xué)全套課件
- 【學(xué)海導(dǎo)航】2013屆高三物理一輪復(fù)習(xí) 第11章 第3節(jié) 電磁振蕩與電磁波 電磁波譜課件 新人教版
- 電工plc培訓(xùn)-技工技能類
- 塑膠及噴油件檢驗(yàn)標(biāo)準(zhǔn)
- 電力系統(tǒng)碳排放流的計(jì)算方法初探_周天睿
- 長(zhǎng)陽(yáng)土家族自治縣骨干教師考核評(píng)價(jià)評(píng)分表(試行)
- 雨水泵站工程施工設(shè)計(jì)方案范文
評(píng)論
0/150
提交評(píng)論