九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷

上傳人:沈*** 文檔編號:86639953 上傳時(shí)間:2022-05-08 格式:DOC 頁數(shù):21 大?。?3KB
收藏 版權(quán)申訴 舉報(bào) 下載
大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷_第1頁
第1頁 / 共21頁
大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷_第2頁
第2頁 / 共21頁
大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷_第3頁
第3頁 / 共21頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷》由會(huì)員分享,可在線閱讀,更多相關(guān)《大大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)二叉樹地遍歷(21頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、word摘要針對現(xiàn)實(shí)世界中許多關(guān)系復(fù)雜的數(shù)據(jù),如人類社會(huì)的家譜,各種社會(huì)組織機(jī)構(gòu),博弈交通等復(fù)雜事物或過程以與客觀世界中廣泛存在的具有分支關(guān)系或?qū)哟翁匦缘膶ο笕绮僮飨到y(tǒng)的文件構(gòu)成、人工智能和算法分析的模型表示以與數(shù)據(jù)庫系統(tǒng)的信息組織形式等,用線性結(jié)構(gòu)難以把其中的邏輯關(guān)系表達(dá)出來,必須借助于數(shù)和圖這樣的非線性結(jié)構(gòu),因此在以模擬客觀世界問題,解決客觀世界問題為主要任務(wù)的計(jì)算機(jī)領(lǐng)域中樹型結(jié)構(gòu)是信息的一種重要組織形式,樹有著廣泛應(yīng)用。在樹型結(jié)構(gòu)的應(yīng)用中又以二叉樹最為常用。二叉樹是一種非常重要的非線性結(jié)構(gòu),所描述的數(shù)據(jù)有明顯的層次關(guān)系,其中的每個(gè)元素只有一個(gè)前驅(qū),二叉樹是最為常用的數(shù)據(jù)結(jié)構(gòu),它的實(shí)際應(yīng)用

2、非常廣泛,二叉樹的遍歷方式有三種,前序遍歷,中序遍歷,后序遍歷,先序遍歷的順序?yàn)椋篘LR先根結(jié)點(diǎn),然后左子樹,右子樹;中序遍歷順序?yàn)?;LNR先左子樹,然后根結(jié)點(diǎn),右子樹;后序遍歷順序?yàn)椋篖RN先左子樹,然后右子樹,根結(jié)點(diǎn)。由前序和中序遍歷,有中序和后序遍歷序列可以唯一確定一棵二叉樹。對于給幾個(gè)數(shù)據(jù)的排序或在的幾個(gè)數(shù)據(jù)中進(jìn)展查找,二叉樹均能提供一種十分有效的方法,比如在查找問題上,任何借助于比擬法查找長度為的一個(gè)序表的算法,都可以表示成一株二叉樹。反之,任何二叉樹都對應(yīng)一個(gè)查找有序表的有效方法根據(jù)樹的數(shù)學(xué)理論,對于算法分析的某些最有啟發(fā)性的應(yīng)用,是與給出用于計(jì)算各種類型中不同樹的數(shù)目的公式有關(guān)的

3、。本文對二叉樹以與二叉樹的各種功能做介紹以與寫出一些根本的程序,讓我們對二叉樹的理解有更好的效果。關(guān)鍵詞:二叉樹的遍歷;左子樹;右子樹;遞歸文案大全目錄3333332.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):33333總結(jié)3參考文獻(xiàn)3文案大全創(chuàng)建二叉樹并遍歷根本要求:該程序集成了如下功能:1二叉樹的建立2遞歸和非遞歸先序,中序和后序遍歷二叉樹3按層次遍歷二叉樹4交換二叉樹的左右子樹5輸出葉子結(jié)點(diǎn)6遞歸和非遞歸計(jì)算葉子結(jié)點(diǎn)的數(shù)目分先序遍歷,中序遍歷和后序遍歷三種情況考慮。1. 先序遍歷,當(dāng)二叉樹非空時(shí)按以下順序遍歷,否如此完畢操作: 訪問根結(jié)點(diǎn); 按先序遍歷規(guī)如此遍歷左子樹; 按先序遍歷規(guī)如此遍歷右子樹;2. 中序遍歷

4、,當(dāng)二叉樹非空時(shí)按以下順序遍歷,否如此完畢操作: 按中序遍歷規(guī)如此遍歷左子樹; 訪問根結(jié)點(diǎn); 按中序遍歷規(guī)3遍歷右子樹。3. 后序遍歷,當(dāng)二叉樹非空時(shí)按以下順序遍歷,否如此完畢操作: 按后序遍歷規(guī)如此遍歷左子樹; 按后序遍歷規(guī)如此遍歷右子樹; 訪問根結(jié)點(diǎn)。對任意給定的二叉樹頂點(diǎn)數(shù)自定建立它的二叉鏈表存貯結(jié)構(gòu),并利用棧的五種根本運(yùn)算清空堆棧、壓棧、彈出、取棧頂元素、判??諏?shí)現(xiàn)二叉樹的先序、中序、后序三種周游,輸出三種周游的結(jié)果。流程圖與結(jié)構(gòu)圖YESYESNONO圖1.1 流程圖2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):1二叉樹結(jié)點(diǎn)數(shù)據(jù)類型定義為:templatestructBiNodeBiNode*rchild,*l

5、child;/指向左孩子的指針Tdata;/結(jié)點(diǎn)數(shù)據(jù)信息;2二叉樹數(shù)據(jù)類型定義為:templateclassBiTreetemplatefriendostream&operator(ostream&os,BiTree&bt);public:BiTree();/無參構(gòu)造函數(shù)BiTree(intm);/有參空構(gòu)造函數(shù)BiTree(Tary,intnum,Tnone);/有參構(gòu)造函數(shù)BiTree();/析構(gòu)函數(shù)voidpreorder();/遞歸前序遍歷voidinorder();/遞歸中序遍歷voidpostorder();/遞歸后續(xù)遍歷voidlevelorder();/層序遍歷intcount

6、();/計(jì)算二叉樹的結(jié)點(diǎn)數(shù)voiddisplay(ostream&os);/打印二叉樹,有層次voidLevelNum();/計(jì)算每一層結(jié)點(diǎn)數(shù)voidPreOrder();/非遞歸前序遍歷voidPostOrder();/非遞歸后序遍歷voidcreat();/創(chuàng)建二叉樹protected:/以下函數(shù)供上面函數(shù)調(diào)用/對應(yīng)一樣功能Voidcreat(BiNode*&root);/創(chuàng)建voidrelease(BiNode*&root);/刪除BiNode*Build(Tary,intnum,Tnone,intidx);/用數(shù)組創(chuàng)建二叉樹voidPreOrder(BiNode*root);/前序遍歷

7、voidPostOrder(BiNode*root);/后續(xù)遍歷voidLevelNum(BiNode*root);/層序遍歷voidpreorder(BiNode*root);/遞歸前序遍歷voidinorder(BiNode*root);/遞歸中序遍歷voidpostorder(BiNode*root);/遞歸后續(xù)遍歷voidlevelorder(BiNode*root);/層序遍歷intcount(BiNode*root);/計(jì)算結(jié)點(diǎn)數(shù)voiddisplay(ostream&os,BiNode*root,intdep);/打印staticboolleastmanAncestor(BiNo

8、de*root,Tva,Tvb,BiNodeprivate:BiNode*rootptr;#include using namespace std;/*/二叉樹結(jié)點(diǎn)類的定義templatestruct BTNodeT data; BTNode * Lchild,*Rchild; BTNode(T nodeValue = T(),BTNode* leftNode = NULL,BTNode* rightNode = NULL ) :data(nodeValue),Lchild(leftNode),Rchild(rightNode) /可選擇參數(shù)的默認(rèn)構(gòu)造函數(shù);/*/二叉樹的建立template

9、void createBinTree(BTNode * &root ) BTNode* p = root; BTNode* k; T nodeValue ; cinnodeValue; if(nodeValue=-1) root=NULL; else root=new BTNode(); root-data = nodeValue; createBinTree(root-Lchild); createBinTree(root-Rchild); /*/二叉樹的先序遍歷template void preOrder( BTNode * & p) if(p) coutdataLchild); preO

10、rder(p-Rchild); /*/二叉樹的中序遍歷template void inOrder(BTNode * & p) if(p) inOrder(p-Lchild); coutdataRchild); /*/二叉樹的后序遍歷template void levelOrder(BTNode *& p) if(p) levelOrder(p-Lchild); levelOrder(p-Rchild); coutdata ; /*/統(tǒng)計(jì)二叉樹中結(jié)點(diǎn)的個(gè)數(shù)templateint countNode(BTNode * & p) if(p = NULL) return 0; return 1+cou

11、ntNode(p-Lchild)+countNode(p-Rchild);/*/求二叉樹的深度templateint depth(BTNode *& p) if(p = NULL) return -1; int h1 = depth(p-Lchild); int h2 = depth(p-Rchild); if(h1h2)return (h1+1); return h2+1;/*/二叉樹的消毀操作templateBTNode* destroy(BTNode* p) /消毀函數(shù),用來消毀二叉樹中的各個(gè)結(jié)點(diǎn) if(p) return destroy(p-Lchild); return destro

12、y(p-Rchild); delete p; /*/主函數(shù)的設(shè)計(jì)int main () BTNode * rootNode = NULL; int choiced = 0; while(true) system(cls); coutnnn -主界面-nnn; cout 1、創(chuàng)建二叉樹 2、先序遍歷二叉樹n; cout 3、中序遍歷二叉樹 4、后序遍歷二叉樹n; cout 5、統(tǒng)計(jì)結(jié)點(diǎn)總數(shù) 6、查看樹深度 n; cout 7、消毀二叉樹 0、退出nn; coutchoiced; if(choiced = 0) return 0; else if(choiced = 1) system(cls);

13、 cout請輸入每個(gè)結(jié)點(diǎn),回車確認(rèn),并以-1完畢:n; createBinTree(rootNode ); else if(choiced = 2) system(cls); cout先序遍歷二叉樹結(jié)果:n; preOrder(rootNode); coutendl; system(pause); else if(choiced = 3) system(cls); cout中序遍歷二叉樹結(jié)果:n; inOrder(rootNode); coutendl; system(pause); else if(choiced = 4) system(cls); cout后序遍歷二叉樹結(jié)果:n; leve

14、lOrder(rootNode); coutendl; system(pause); else if(choiced = 5) system(cls); int count = countNode(rootNode); cout二叉樹中結(jié)點(diǎn)總數(shù)為countendl; system(pause); else if(choiced = 6) system(cls); int dep = depth(rootNode); cout此二叉樹的深度為dependl; system(pause); else if(choiced = 7) system(cls); cout二叉樹已被消毀!n; destr

15、oy(rootNode); coutendl; system(pause); else system(cls); coutnnnnnt錯(cuò)誤選擇!n; 創(chuàng)建二叉樹:依次輸入二叉樹前序遍歷序列,構(gòu)建相應(yīng)的二叉樹。二叉樹遍歷:遞歸算法、非遞歸算法測試,調(diào)用相應(yīng)函數(shù)進(jìn)展測試,結(jié)果正確。求二叉樹深度和結(jié)點(diǎn)數(shù):創(chuàng)建一個(gè)二叉樹,調(diào)用相關(guān)函數(shù),測試結(jié)果正確。計(jì)算每層結(jié)點(diǎn)數(shù):調(diào)用levelNum()函數(shù),測試結(jié)果正確。調(diào)試時(shí)遇到諸多問題,其中最主要的問題是死循環(huán)問題,在非遞歸遍歷時(shí),容易進(jìn)入死循環(huán),經(jīng)過查找資料、分步調(diào)試最終找到循環(huán)完畢條件,順利解決各個(gè)難題。1初始界面:主界面所包含的內(nèi)容2運(yùn)行結(jié)果:進(jìn)展操作1

16、,輸入每個(gè)結(jié)點(diǎn),顯示結(jié)果如下進(jìn)展操作2,執(zhí)行結(jié)果如下:進(jìn)展操作3,執(zhí)行結(jié)果如下:進(jìn)展操作4,執(zhí)行結(jié)果如下:圖4.5二叉樹后序遍歷:進(jìn)展操作5,執(zhí)行結(jié)果如下:進(jìn)展操作6,執(zhí)行結(jié)果如下:總結(jié)要能很好的掌握編程,僅僅通過幾個(gè)簡單的程序的編寫時(shí)無法達(dá)成的,更需要大量積累和深入才可能通過本次課程設(shè)計(jì)。有關(guān)一個(gè)課題的所有知識(shí)不僅僅是在課本上,多查閱一些資料能夠更好的完成課題,這就需要一種能力,即自學(xué)能力。本次課程設(shè)計(jì)還讓我認(rèn)識(shí)到自己的缺點(diǎn)。本次選的課題是二叉樹的遍歷,因?yàn)楸緦W(xué)期所學(xué)的就是二叉樹等數(shù)據(jù)結(jié)構(gòu),所以認(rèn)為比擬適合。剛開始認(rèn)為會(huì)很簡單,但到后來就出現(xiàn)一些難以解決的問題,就像教師請教,并查閱相關(guān)資料。經(jīng)過慢慢的調(diào)試,最終測試成功。這次課程設(shè)計(jì)讓我所學(xué)到的數(shù)據(jù)結(jié)構(gòu)知識(shí)發(fā)揮的淋漓盡致,而且還拓展了我的知識(shí)面,使我更加熟練的掌握各種方法??傊?,這次課程設(shè)計(jì)增強(qiáng)了我的自學(xué)能力,拓展了我的知識(shí)面,讓我對數(shù)據(jù)結(jié)構(gòu)更加了解。參考文獻(xiàn)1 嚴(yán)蔚敏吳偉民數(shù)據(jù)結(jié)構(gòu)(C語言版)清華大學(xué), 2009年9月2 譚浩強(qiáng)C程序設(shè)計(jì)(第三版)清華大學(xué) 2009年1月

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!