




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、二叉樹的前序、后序的遞歸、非遞歸遍歷算法學(xué)生姓名:賀天立 指導(dǎo)老師:湛新霞摘 要 本課程設(shè)計主要解決樹的前序、后序的遞歸、非遞歸遍歷算法,層次序 的非遞歸遍歷算法的實現(xiàn)。在課程設(shè)計中,系統(tǒng)開發(fā)平臺為 Windows 2000,程 序設(shè)計設(shè)計語言采用Visual C+,程序運行平臺為Windows 98/2000/XP。用除 遞歸算法前序,后續(xù),中序遍歷樹外還通過非遞歸的算法遍歷樹。程序通過調(diào)試 運行,初步實現(xiàn)了設(shè)計目標,并且經(jīng)過適當完善后,將可以應(yīng)用在商業(yè)中解決實 際問題。關(guān)鍵詞程序設(shè)計;C+ ;樹的遍歷;非遞歸遍歷引 言本課程設(shè)計主要解決樹的前序、后序的遞歸、非遞歸遍歷算法,層次序的非遞 歸
2、遍歷算法的實現(xiàn)。課程設(shè)計的任務(wù)構(gòu)造一棵樹并輸入數(shù)據(jù),編寫三個函數(shù),非別是樹的前序遞歸遍歷算法、樹的 后序遞歸遍歷算法、樹的非遞歸中序遍歷算法(這里的非遞歸以中序為例)。在 主程序中調(diào)用這三個函數(shù)進行樹的遍歷,觀察用不同的遍歷方法輸出的數(shù)據(jù)的順 序和驗證遞歸與非遞歸輸出的數(shù)據(jù)是否一樣。課程設(shè)計的性質(zhì)由要求分析知,本設(shè)計主要要求解決樹的前序、后序的遞歸、非遞歸遍歷算 法,層次序的非遞歸遍歷算法的實現(xiàn)。所以設(shè)計一個良好的前序、后序的遞歸、 非遞歸遍歷算法非常重要。課程設(shè)計的目的在程序設(shè)計中,可以用兩種方法解決問題:一是傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計方法,二是更先進的面向?qū)ο蟪绦蛟O(shè)計方法1。利用數(shù)據(jù)結(jié)構(gòu)課程的相
3、關(guān)知識完成一個具有一定難度的綜合設(shè)計題目, 利用C語言進行程序設(shè)計。鞏固和加深對線性表、棧、隊列、字符串、樹、圖、 查找、排序等理論知識的理解;掌握現(xiàn)實復(fù)雜問題的分析建模和解決方法(包括 問題描述、系統(tǒng)分析、設(shè)計建模、代碼實現(xiàn)、結(jié)果分析等);提高利用計算機分 析解決綜合性實際問題的基本能力。樹的遍歷分為前序、中序和后序,可以用遞歸算法實現(xiàn)樹的三種遍歷。除了 遞歸外還可以構(gòu)造棧,利用出棧和入棧來實現(xiàn)樹的前序遍歷、中序遍歷和后序遍 歷。需求分析(1)根據(jù)給定二叉樹的先序遍歷結(jié)果,構(gòu)造出該二叉樹; 按先序次序輸入二叉樹中結(jié)點的值(一個字符),空格字符表示空樹。(2)給出該二叉樹的遞歸前序和后序遍歷結(jié)
4、果還有非遞歸中序遍歷結(jié)果。二叉樹非遞歸遍歷是用顯示棧來存儲二叉樹的結(jié)點指針。前序遍歷時,按二叉樹前序 遍歷的順序訪問結(jié)點并將結(jié)點的指針入棧,直到棧頂指針指向的結(jié)點的左指針域為空時取出 棧頂指針并刪除棧頂指針,訪問剛?cè)〕龅闹羔樦赶虻慕Y(jié)點的右指針指向的結(jié)點并將其指針入 棧,如此反復(fù)執(zhí)行且在有標志的情況下實現(xiàn)前序非遞歸算法。前序遍歷二叉樹的遞歸遍歷為 若二叉樹為空,則算法結(jié)束,否則(1)訪問根結(jié)點,(2)前序遍歷左子樹,(3)前序遍歷 右子樹。后序遍歷得遞歸為若二叉樹非空,則依次執(zhí)行如下操作:(1)遍歷左子樹;(2)遍歷 右子樹;(3)訪問根結(jié)點。概要設(shè)計3.1 數(shù)據(jù)存儲結(jié)構(gòu)二叉樹的存儲結(jié)構(gòu)type
5、def char DataType;struct BitreeNodeDataTypedata;BitreeNode*lchild;BitreeNode*rchild;3.2 基本操作T=CreateBitree();/創(chuàng)建樹Preorder(T) ;/輸出樹的前序遍歷Postorder(T);/輸出樹的后序遍歷Inorder2(T);/輸出樹的非遞歸中序遍歷以下為流程圖:詳細設(shè)計4.1 數(shù)據(jù)類型定義二叉樹的定義:二叉樹的存儲結(jié)構(gòu)typedef char DataType;struct BitreeNodeDataType data;/二叉樹的數(shù)據(jù)BitreeNode*lchild;/指向左孩
6、子的指針BitreeNode*rchild;/指向右孩子的指針;4.2 系統(tǒng)主要子程序詳細設(shè)計主程序模塊設(shè)計及用戶工作區(qū)模塊設(shè)計: void main()struct BitreeNode*T=0;/定義T為指向BitreeNode類型的指針T=CreateBitree();/ 用前序輸入法創(chuàng)建二叉樹prin tf( n 前序遍歷n);Preorder(T) ;/用前序遞歸輸入法輸出二叉樹prin tf( n 后序遍歷n);Postorder(T); /用后序遞歸輸入法輸出二叉樹 prin tf( n中序遍歷(非遞歸)n);Inorder2(T);/用中序非遞歸輸入法輸出二叉樹coutdata
7、=ch;T-lchild=CreateBitree();T-rchild=CreateBitree();return T;先序遞歸遍歷二叉樹:void Preorder(struct BitreeNode *p) if (p!=NULL)printf(%c,p-data);Preorder( p-lchild );Preorder(p-rchild );后序遞歸遍歷二叉樹void Postorder(struct BitreeNode *p) if (p!=NULL)Postorder( p-lchild ); Postorder(p-rchild ) ; printf(%c,p-data);
8、中序非遞歸遍歷二叉樹void Inorder2(BitreeNode *T)/ 中序遍歷二叉樹的非遞歸算法BitreeNode *p;BitreeNode * stack100;/定義了一個棧的對象sint top=0;stacktop+=T; /根結(jié)點的指針進棧while (top0)p= stacktop-1;while (p)stacktop+= p-lchild/往左下走到底p= stacktop-1;p= stack-top;/ 空指針退棧if (top0 )p=stack-top; coutdata; stacktop+= p-rchild;/訪問結(jié)點后向右下一步 釋放存儲空間:v
9、oid DeleteTree(struct BitreeNode *p) if (p!=NULL)DeleteTree( p-lchild ); DeleteTree(p-rchild ) ; free(p);調(diào)試分析系統(tǒng)運行主界面如圖 5.1 所示:caw乩已(亡請輸入一顆二叉樹在主菜單下,用戶輸入數(shù)據(jù),按回車鍵。屏幕顯示如下圖所示S3血 CAWi nd Dws5ystem32cmd .exeS3晴輸入顆二叉樹孔皿F刪9丼丼網(wǎng)序遍歷abedefg 辰序遍歷 edbfgea 用序遍歷(非遞歸 cbdafeg請按任意鍵繼續(xù) 總結(jié)“ 數(shù)據(jù)結(jié)構(gòu) ” 是計算機類各專業(yè)的核心課程,也是其他諸多類專業(yè)的重
10、 要選修課。我通過學(xué)習(xí)這門課,可以為理解、應(yīng)用和開發(fā)程序提供技術(shù)和方法支 持,為后續(xù)課程的學(xué)習(xí)提供重要思想和方法基礎(chǔ)。同時對于我的邏輯思維培養(yǎng)和 程序設(shè)計思想體系的建立有著重要的影響。在調(diào)試過程中,碰到諸多問題,比如定義表長過小,處理記錄數(shù)量錯誤時 程序的異常,記錄沖突次數(shù)等等。處理這些問題異常麻煩,有時連續(xù)錯誤,摸不 清頭緒,在不斷調(diào)試,詢問老師,和同學(xué)探討之后,終于解決,運行成功。參考文獻李文軍,李師賢,周曉聰.C+作為計算機專業(yè)程序設(shè)計入門語言的實踐與探討.計算機科學(xué),1999, 26 (4): 8083唐浩強 C程序設(shè)計(第三版)清華大學(xué)出版社,2005嚴蔚敏,吳偉民數(shù)據(jù)結(jié)構(gòu)(C語言版
11、)清華大學(xué)出版社,1997F. Brokken and K. Kubat.C+ Annotations. Version 4.4.0m, ICCE,University of Groningen, Netherlands, 1990. 250280附錄:#includeiostream using namespace std; typedef char DataType; struct BitreeNodeDataTypedata;BitreeNode*lchild;BitreeNode*rchild;void Preorder(struct BitreeNode *p) / 先序遍歷二叉樹i
12、f (p!=NULL) printf(%c,p-data); Preorder( p-lchild ); Preorder(p-rchild );void Postorder(struct BitreeNode *p) / 后序遍歷二叉樹if (p!=NULL)Postorder( p-lchild ); Postorder(p-rchild ) ; printf(%c,p-data);/ a=&b;/PostorderBitreeNode *CreateBitree() /按先序次序輸入二叉樹 char ch;scanf(%c,&ch);BitreeNode* T=NULL;if(ch!=#
13、)T= (struct BitreeNode*)(malloc(sizeof(struct BitreeNode); T-data=ch;T-lchild=CreateBitree();T-rchild=CreateBitree();return T;void DeleteTree(struct BitreeNode *p)/ 釋放存儲空間if (p!=NULL)DeleteTree( p-lchild );DeleteTree(p-rchild ) ; free(p);/Postordervoid Inorder2(BitreeNode *T)/ 中序遍歷二叉樹的非遞歸算法BitreeNode *p;BitreeNode * stack100;/定義了一個棧的對象sint top=0; stacktop+=T;/根結(jié)點的指針進棧while (top0)p= stacktop-1;while (p)stacktop+= p-lchild ;/往左下走到底p= stacktop-1;p= stack-top;/ 空指針退棧if (top0 )p=stack-top; coutdata; stacktop+= p-rchild;/訪問結(jié)點后向右下一步/if/wh
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年保健按摩師(初級)按摩職業(yè)規(guī)劃考核試卷
- 2025年采購師(中級)考試試卷:供應(yīng)鏈金融與采購創(chuàng)新
- 2025年保育員實操技能試卷:幼兒教育心理輔導(dǎo)創(chuàng)新案例分析
- 國際貿(mào)易業(yè)務(wù)開展證明(6篇)
- 2025年電梯檢驗員資格考試試卷:電梯檢驗員職業(yè)規(guī)劃案例分析試題
- 2025年法語DELFA1級考試試卷模擬試題詳解
- 2025年導(dǎo)游資格證考試筆試旅游外語應(yīng)用與案例分析與實踐案例分析試卷
- 2025年攝影師職業(yè)技能鑒定攝影器材品牌策略試題試卷
- 農(nóng)產(chǎn)品冷鏈物流冷鏈物流行業(yè)技術(shù)創(chuàng)新與產(chǎn)業(yè)升級研究報告
- 教育與培訓(xùn)行業(yè):在線教育平臺用戶行為分析與優(yōu)化策略
- 2023-2024學(xué)年浙江省寧波市慈溪市四年級(下)期末數(shù)學(xué)試卷
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考生物真題試卷(解析版)
- 2025合同條款履行保證條款
- 2025-2030中國線掃描照相機行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析研究報告
- 阿米巴模式的合同協(xié)議書
- 新聞記者采編報導(dǎo)人員崗位從業(yè)資格考試題含答案
- 胰島素皮下注射團體標準解讀課件
- 2025至2030年中國鋼結(jié)構(gòu)制品行業(yè)投資前景及策略咨詢研究報告
- 2025河南中考:政治必背知識點
- 算力電力協(xié)同發(fā)展研究報告2025年
- 對公客戶經(jīng)理培訓(xùn)課件
評論
0/150
提交評論