數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-二叉樹(shù)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-二叉樹(shù)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-二叉樹(shù)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-二叉樹(shù)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-二叉樹(shù)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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ì)文檔-傾情為你奉上湖南涉外經(jīng)濟(jì)學(xué)院課程設(shè)計(jì)報(bào)告課程名稱: 數(shù)據(jù)結(jié)構(gòu) 報(bào)告題目: 二叉樹(shù)的基本操作 學(xué)生姓名: 肖琳桂、康政、張小東、張帆 所在學(xué)院: 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí): 軟工本1402 學(xué)生學(xué)號(hào): 、02、14、08 指導(dǎo)教師: 李春庭 專心-專注-專業(yè)2015 年 12 月 31 日課程設(shè)計(jì)任務(wù)書(shū)報(bào)告題目二叉樹(shù)的基本操作完成時(shí)間2周學(xué)生姓名肖琳桂 康政專業(yè)班級(jí)軟工本 1402指導(dǎo)教師李春庭職稱講師總體設(shè)計(jì)要求和主要功能設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn)二叉樹(shù)的創(chuàng)建以及二叉樹(shù)的遍歷(包括先序遍歷、中序遍歷、后序遍歷和層次遍歷),計(jì)算并輸出二叉樹(shù)的深度和結(jié)點(diǎn)個(gè)數(shù),功能要求:1二叉樹(shù)以二叉鏈表

2、存儲(chǔ),結(jié)點(diǎn)數(shù)據(jù)類型采用字符表示,按二叉樹(shù)的先序遍歷序列創(chuàng)建。2用文本編輯器編寫(xiě)一個(gè)data.txt的文件,包含3個(gè)以上創(chuàng)建按二叉樹(shù)的先序遍歷序列(即序列中包含空樹(shù)節(jié)點(diǎn)),每個(gè)序列長(zhǎng)度不少于10個(gè),在運(yùn)行程序時(shí)自動(dòng)載入,也可以由鍵盤輸入創(chuàng)建二叉樹(shù)。|3菜單功能:創(chuàng)建二叉樹(shù)(二級(jí)菜單說(shuō)明 選擇文件中的第幾個(gè),輸出創(chuàng)建二叉樹(shù)的深度及結(jié)點(diǎn)數(shù),若失敗則有相應(yīng)提示),遍歷序列(顯示先序,中序,后序和層次遍歷結(jié)果),結(jié)點(diǎn)的孩子信息,退出系統(tǒng)。工作內(nèi)容及時(shí)間進(jìn)度安排第17周:周1-周2 :立題、論證方案設(shè)計(jì)周3-周5 :程序設(shè)計(jì)及程序編碼第18周:周1-周3 :程序調(diào)試周4-周5 :驗(yàn)收答辯摘 要本課程設(shè)計(jì)主

3、要說(shuō)明如何在C+編程環(huán)境下實(shí)現(xiàn)二叉樹(shù)的遍歷,遍歷方式包括:二叉樹(shù)的先序遍歷、中序遍歷、后序遍歷,層次遍歷等四種遍歷方式。同時(shí),此次課程設(shè)計(jì)還包括了求二叉樹(shù)深度和結(jié)點(diǎn)個(gè)數(shù),結(jié)點(diǎn)的孩子信息,以及對(duì)文件的操作,用文件讀取的方式實(shí)現(xiàn)對(duì)二叉樹(shù)的建立。以通過(guò)此次課程設(shè)計(jì),使學(xué)生充分掌握樹(shù)的基本操作,以及對(duì)線性存儲(chǔ)結(jié)構(gòu)的理解。同時(shí),在對(duì)樹(shù)的遍歷的操作過(guò)程中,同樣是運(yùn)用遞歸的方式實(shí)現(xiàn)遍歷,在對(duì)樹(shù)實(shí)現(xiàn)層次操作的時(shí)候,要求用循環(huán)隊(duì)列的操作方式來(lái)實(shí)現(xiàn)層次遍歷。此次課程設(shè)計(jì)對(duì)數(shù)據(jù)結(jié)構(gòu)內(nèi)容綜合性的運(yùn)用的要求較高。關(guān)鍵詞:二叉樹(shù),先序遍歷,中序遍歷,后序遍歷,層次遍歷,節(jié)點(diǎn),線性存儲(chǔ), 節(jié)點(diǎn)的孩子信息目 錄一、需求分析1

4、問(wèn)題描述設(shè)計(jì)一個(gè)二叉樹(shù)。二叉樹(shù)形象地說(shuō)即樹(shù)中每個(gè)節(jié)點(diǎn)最多只有兩個(gè)分支,它是一種重要的數(shù)據(jù)類型??梢赃\(yùn)用于建立家譜,公司所有的員工的職位圖,以及各種事物的分類和各種機(jī)構(gòu)的職位圖表等。二叉樹(shù)是通過(guò)建立一個(gè)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),達(dá)到能夠?qū)崿F(xiàn)前序遍歷,中序遍歷,后序遍歷,層次遍歷。以及能夠從輸入的數(shù)據(jù)中得知二叉樹(shù)的葉子結(jié)點(diǎn)的個(gè)數(shù),二叉樹(shù)的深度。在此,二叉樹(shù)的每一個(gè)結(jié)點(diǎn)中必須包括:值域,左指針域,右指針域。我們抽象出下列問(wèn)題:實(shí)現(xiàn)文件操作,運(yùn)用文件輸入流,將已經(jīng)寫(xiě)好二叉樹(shù)序列的txt文本文件,加載到程序中,實(shí)現(xiàn)文件創(chuàng)建二叉樹(shù)。然后采用鏈表存儲(chǔ)的方式遍歷二叉樹(shù)(先序遍歷、中序遍歷、后序遍歷、層次遍歷)。層次遍歷運(yùn)

5、用循環(huán)隊(duì)列的方法實(shí)現(xiàn),需要重新定義隊(duì)頭和隊(duì)尾,以及隊(duì)列的最大長(zhǎng)度,并且在屏幕上實(shí)現(xiàn)輸出顯示。2功能要求(1)用菜單的形式實(shí)現(xiàn)操作界面,提供(14)個(gè)功能選項(xiàng),功能分別為創(chuàng)建二叉樹(shù)、遍歷序列、節(jié)點(diǎn)的孩子信息、退出系統(tǒng)。(2)創(chuàng)建二叉樹(shù)。要求用文件讀取和鍵盤輸入兩種不同的方式實(shí)現(xiàn)二叉樹(shù)的創(chuàng)建。二級(jí)菜單說(shuō)明,輸出創(chuàng)建二叉樹(shù)的深度及結(jié)點(diǎn)數(shù),若失敗則有相應(yīng)提示。(3)遍歷序列。顯示先序,中序,后序和層次遍歷結(jié)果。先序遍歷、中序遍歷、后序遍歷用遞歸的方法實(shí)現(xiàn)遍歷。層次遍歷,用循環(huán)隊(duì)列的方法實(shí)現(xiàn)。(4)每次實(shí)現(xiàn)一項(xiàng)操作之后,要有相應(yīng)的提示返回菜單。二、概要設(shè)計(jì)1.總體設(shè)計(jì)圖主菜單遍歷序列創(chuàng)建二叉樹(shù)節(jié)點(diǎn)的孩子

6、信息退出系統(tǒng)2.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)元素為字符,邏輯結(jié)構(gòu)為樹(shù)形結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)為二叉鏈?zhǔn)酱鎯?chǔ),系統(tǒng)操作的數(shù)據(jù)元素主要是創(chuàng)建一個(gè)二叉樹(shù),遍歷序列。3.算法設(shè)計(jì)本系統(tǒng)主要用到的算法有先序遍歷、中序遍歷、后序遍歷、層次遍歷、創(chuàng)建二叉樹(shù)和查找節(jié)點(diǎn)。從子菜單界面只能返回到主菜單界面,而不是退出程序。4.主要模塊及模塊之間的關(guān)系 運(yùn)行程序后直接進(jìn)入“菜單主界面”模塊,菜單顯示分為4個(gè)模塊,(14)分別為創(chuàng)建二叉樹(shù)、遍歷序列、節(jié)點(diǎn)的孩子信息、退出系統(tǒng)。主界面中的各個(gè)模塊都是獨(dú)立運(yùn)行,每完成一項(xiàng)操作后,返回主菜單模塊。通過(guò)相應(yīng)定義的函數(shù)(外部接口)實(shí)現(xiàn),內(nèi)部數(shù)據(jù)的改變由模塊內(nèi)部完成。三、詳細(xì)設(shè)計(jì)1.結(jié)構(gòu)體(或類)

7、設(shè)計(jì)typedef char TElemType;typedef struct BiTNodeTElemType date;struct BiTNode *lchild,*rchild;BiTNode,*BiTree;2. 主要模塊實(shí)現(xiàn)的流程圖Case=1Case=2Case=4Case=33.算法設(shè)計(jì)先序遍歷:void PreOrderTraverse(BiTree T) if(T) cout<<T->date;PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild); 中序遍歷:void InOrderTr

8、aver(BiTree T) if(T) InOrderTraver(T->lchild);cout<<T->date;InOrderTraver(T->rchild); 后序遍歷:void PostOrderTraver(BiTree T) if(T) PostOrderTraver(T->lchild);PostOrderTraver(T->rchild);cout<<T->date; 層次遍歷: void ccbl(BiTNode *b) BiTNode *p; BiTNode *qMaxSize; int qm,h; qm=h

9、=-1; h+; qh=b; while(qm != h) qm=(qm+1)%MaxSize; p=qqm; printf("%c ",p->date); if(p->lchild!=NULL) h=(h+1)%MaxSize; qh=p->lchild; if(p->rchild!=NULL) h=(h+1)%MaxSize; qh=p->rchild; 四、測(cè)試運(yùn)行1登錄和主界面運(yùn)行效果圖2運(yùn)行說(shuō)明主程序運(yùn)行后,直接到菜單選擇界面。其中有(14個(gè)選項(xiàng)可以選擇)1.創(chuàng)建二叉樹(shù) 2.遍歷序列 3.節(jié)點(diǎn)的孩子信息 4.退出系統(tǒng)。除退出以外,每個(gè)

10、功能模塊運(yùn)行完后,返回到主菜單界面,每個(gè)界面相互獨(dú)立。3. 運(yùn)行效果圖表 學(xué)生情況統(tǒng)計(jì)表序號(hào)姓名性別出生日期學(xué)號(hào)專業(yè)聯(lián)系電話備注1康政男1994.12軟件工程 組長(zhǎng)2肖琳桂男1996.08軟件工程 3張小東男1994.07軟件工程 4張帆 男1995.08軟件工程五、結(jié)論與心得1.總體評(píng)價(jià)在此次的課程設(shè)計(jì)中,由于不夠細(xì)心,在程序設(shè)計(jì)中犯了一些錯(cuò)誤,花了挺多的時(shí)間。但是經(jīng)過(guò)一番思考并且在老師的幫助下,找到了導(dǎo)致程序錯(cuò)誤的原因,經(jīng)過(guò)幾次修改和調(diào)試,程序能正常運(yùn)行,并且能夠完成課程設(shè)計(jì)任務(wù)中的大部分功能。同時(shí)在此次的課程設(shè)計(jì)中讓我更深刻的了解了二叉樹(shù)的基本操作,增加了對(duì)專業(yè)只是學(xué)習(xí)的興趣。我想在以后

11、的學(xué)習(xí)中,我們會(huì)繼續(xù)努力,希望在計(jì)算機(jī)方面有好的成績(jī),也感謝老師給我們這次課程設(shè)計(jì)的機(jī)會(huì),讓我們認(rèn)識(shí)到了自身的不足,讓我們能夠不斷地完善自己!2. 所做的工作及體會(huì)肖琳桂:編寫(xiě)程序和課程設(shè)計(jì)報(bào)告。課程設(shè)計(jì)中我主要擔(dān)任程序設(shè)計(jì)的編寫(xiě)和設(shè)計(jì)報(bào)告的編寫(xiě)工作,經(jīng)過(guò)兩個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)數(shù)據(jù)結(jié)構(gòu)有了更進(jìn)一步的認(rèn)識(shí)和理解,也知道了要想學(xué)好它要重在實(shí)踐,要通過(guò)不斷的上機(jī)操作才能更好地學(xué)習(xí)它。通過(guò)實(shí)踐我發(fā)現(xiàn)我的很多不足之處,然感覺(jué)理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過(guò)程中仍有意想不到的困惑,因?yàn)樽约簩?duì)知識(shí)點(diǎn)的掌握不夠熟悉,但通過(guò)學(xué)習(xí)有很大改進(jìn)。在這次課程設(shè)計(jì)中使我知道了二又樹(shù)的先序、中序、后序、層次遍歷。

12、同時(shí),還包括了求二叉樹(shù)深度和結(jié)點(diǎn)個(gè)數(shù),結(jié)點(diǎn)的孩子信息,以及對(duì)文件的操作,用文件讀取的方式實(shí)現(xiàn)對(duì)二叉樹(shù)的建立。充分掌握樹(shù)的基本操作,以及對(duì)線性存儲(chǔ)結(jié)構(gòu)的理解。也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。在設(shè)計(jì)過(guò)程中,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。我學(xué)會(huì)了運(yùn)籌帷幌,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世,這次課程設(shè)計(jì)對(duì)找來(lái)說(shuō)受益良多。在今后的日子里,我會(huì)認(rèn)真對(duì)待每一件事情,爭(zhēng)取做到最好,努力將知識(shí)與實(shí)踐相結(jié)合,不斷鞏固,加深所學(xué)的知識(shí),做到學(xué)以致用。另外感謝老師的細(xì)心教導(dǎo),以及同學(xué)們的幫助??嫡壕帉?xiě)程序和課程設(shè)計(jì)報(bào)告。我在小組中做了編寫(xiě)程序和撰寫(xiě)報(bào)

13、告的工作。在編寫(xiě)程序時(shí),遇到很多困難,例如缺少聲明,調(diào)用函數(shù)錯(cuò)誤等等。通過(guò)網(wǎng)上搜查,查詢資料以及老師的指點(diǎn)幫助,完成了很多任務(wù)。作為基礎(chǔ)不是很好的學(xué)生,我在克服自己知識(shí)不足的過(guò)程中也在努力學(xué)習(xí)新的知識(shí),運(yùn)用不同的原理編寫(xiě)出不同的算法。也學(xué)習(xí)到,算法不能盲目抄襲,很多東西是不同的,必須通過(guò)自己的思考和努力的鉆研才能寫(xiě)出一套完整的代碼,不可心急,越是急越不可能精細(xì)的完成任務(wù)。撰寫(xiě)報(bào)告的時(shí)候,很多地方因細(xì)節(jié)問(wèn)題處理不好導(dǎo)致出了大大小小很多漏洞,不能很精細(xì)的完成指定的任務(wù)。從中我也明白了,做一件事,尤其是耗時(shí)的編寫(xiě)程序的問(wèn)題,不能心急也不能馬虎,也許一點(diǎn)點(diǎn)出錯(cuò)整個(gè)程序就會(huì)崩潰,還要重新一點(diǎn)點(diǎn)的檢查才能

14、找出問(wèn)題,大大降低了辦事效率。所以,今后要做的第一件事是慢慢鞏固檢出,打好根基。第二件事是沉下心來(lái)認(rèn)真做事,不能毛手毛腳,從頭到尾認(rèn)真細(xì)致的做下去,避免出錯(cuò)惹出更多的麻煩。這次的程序設(shè)計(jì)使我受益匪淺,學(xué)到了很多,做了很多。希望以后可以更多的做這種任務(wù),鞏固知識(shí),學(xué)習(xí)新的知識(shí),有了這些經(jīng)驗(yàn)可以做的更好。張小東:查找資料和打印。這次我在小組中做的事情是查詢資料和打印排版。雖然因?yàn)槲业膶I(yè)底子差一點(diǎn),現(xiàn)在暫時(shí)只能在程序設(shè)計(jì)時(shí)查找一些需要用到的專業(yè)資料,幫助組員完成設(shè)計(jì),但我相信下一次我不會(huì)僅此于此。這次程序設(shè)計(jì)我的收獲還是很大了,讓我懂得了學(xué)好專業(yè)知識(shí),并不是自己想象中的難,而是你自己是否去努力了。

15、在查找資料的過(guò)程中,我是邊查邊學(xué)自己不會(huì)的知識(shí)點(diǎn)。查找途中也遇到了一些當(dāng)時(shí)不能理解的知識(shí)點(diǎn),但經(jīng)過(guò)同學(xué)的細(xì)心解答,最后一些難掌握的知識(shí)點(diǎn)都被基本掌握。這讓我懂得編程過(guò)程需要很大的耐心,而且要有良好的思維和扎實(shí)的專業(yè)基礎(chǔ)知識(shí),所以我需要努力的學(xué)習(xí),發(fā)現(xiàn)自身不足之處并努力改正他,逐步提高自身的能力,不斷取得進(jìn)步。通過(guò)這次課程設(shè)計(jì),我認(rèn)識(shí)到知識(shí)運(yùn)用的重要性,并且努力加深對(duì)基礎(chǔ)知識(shí)的理解,從中了解自己需要學(xué)習(xí)的東西并學(xué)會(huì)自學(xué)。作為一名計(jì)算機(jī)專業(yè)的學(xué)生,今后我會(huì)加緊學(xué)習(xí),學(xué)好專業(yè)知識(shí),為將來(lái)打下堅(jiān)實(shí)的基礎(chǔ)。張帆:查找資料和打印。這次我在小組中做的事情是查詢資料,打印排版。雖然這些工作并不是主要任務(wù),但是

16、我用心對(duì)待,認(rèn)真為做程序的同學(xué)查找資料,為他們挑選所需要的代碼以及算法,及時(shí)反饋給他們信息。因?yàn)榛A(chǔ)不是很好,經(jīng)常會(huì)剪裁到一些不是很合適的代碼,我們通過(guò)共同分析,共同篩選,最終也獲得了很多收獲。通過(guò)和他們一起分析代碼,我也漲了很多知識(shí)。懂的了二叉樹(shù)的算法,數(shù)據(jù)類型等等。報(bào)告的排版也是一項(xiàng)需要耐心的工作,通過(guò)晚上的時(shí)間,我認(rèn)認(rèn)真真的對(duì)所寫(xiě)的設(shè)計(jì)報(bào)告進(jìn)行了排版,把一些不符合文本框架或者有代碼錯(cuò)誤的都進(jìn)行了細(xì)致的修改,保證了設(shè)計(jì)報(bào)告的質(zhì)量。從這次的程序設(shè)計(jì)中,我學(xué)到了很多。認(rèn)認(rèn)真真做一件事情不會(huì)有錯(cuò),用什么態(tài)度做什么事會(huì)得到什么樣的回報(bào)。并且我認(rèn)為數(shù)據(jù)結(jié)果也不是很難的科目,認(rèn)真花時(shí)間去琢磨一定不會(huì)落

17、下很多。所以以后我會(huì)細(xì)致做事,并在閑暇時(shí)間補(bǔ)習(xí)功課,爭(zhēng)取盡快補(bǔ)習(xí)好原來(lái)的知識(shí),再學(xué)習(xí)新的知識(shí)為自己充電。六、程序附錄(源代碼)#include<iostream>#include<fstream>#include<stdlib.h>using namespace std;typedef char TElemType;#define MaxSize 1000 int i;typedef struct BiTNodeTElemType date;struct BiTNode *lchild,*rchild;BiTNode,*BiTree;void Destory

18、(BiTree &T);/函數(shù)聲明char input255;void Interface();void sjecs(BiTree &T);void jp(BiTree &T);/鍵盤void wj(BiTree &T);/文件void CreateBiTree(BiTree &T);int Count(BiTree T);int Deep(BiTree T);void PreOrderTraverse(BiTree T);/先序void InOrderTraver(BiTree T);/中序void PostOrderTraver(BiTree T);

19、/后序void ccbl(BiTNode *b);/層次遍歷void blxljm();void locate(BiTree T,char x);void main()/主函數(shù)Interface();BiTree T=NULL;bool End=false;char sel;char x;int p=1;int q=1;doInterface();fflush(stdin);char select=cin.get();system("cls");switch(select)case'1':cout<<"創(chuàng)建二叉樹(shù):n"sjec

20、s(T);break;case'2': cout<<"nt遍歷序列n"doblxljm();cout<<"n選擇:"fflush(stdin);sel=cin.get();p=1;switch(sel)case'1':cout<<"n先序遍歷二叉樹(shù)的輸出順序:n"PreOrderTraverse(T);cout<<"n"system("pause");system("cls");break;cas

21、e'2': cout<<"n中序遍歷二叉樹(shù)的輸出順序:n"InOrderTraver(T);cout<<"n"system("pause");system("cls");break; case'3': cout<<"n后序遍歷二叉樹(shù)的輸出順序:n"PostOrderTraver(T);cout<<"n"system("pause");system("cls"

22、);break; case'4': cout<<"n層次遍歷二叉樹(shù)的輸出順序:n" ccbl(T);cout<<"n"system("pause");system("cls");break; case'5': p=0;while(p);break;case'3': do system("cls");q=1;cout<<"n-結(jié)點(diǎn)的孩子信息:-n" cout<<"(如果節(jié)點(diǎn)

23、不存在,不返回任何信息,按任意鍵返回子菜單)n" cout<<"輸入要查找的節(jié)點(diǎn):" cin>>x; locate(T,x);system("pause");system("cls"); cout<<"n-菜單信息:-n"cout<<"nt0.輸入返回主菜單n"cout<<"t1.繼續(xù)查找節(jié)點(diǎn)n"docout<<"t請(qǐng)選擇:"cin>>q;if(q!=0&

24、&q!=1) cout<<"輸入格式不對(duì)請(qǐng)重新輸入n"while(q!=0&&q!=1);while(q);break;case'4':End=true;system("pause");while(!End);void locate(BiTree T,char x) / 在二叉樹(shù)T中查找值為x的節(jié)點(diǎn)BiTree p;p=T; if(T=NULL) return;else if(T->date=x) cout<<p->date; if(T->lchild)cout<&l

25、t;"t"<<"節(jié)點(diǎn)的左孩子:"<<T->lchild->date<<"n"else cout<<"t"<<"節(jié)點(diǎn)沒(méi)有左孩子n"if(T->rchild)cout<<"t節(jié)點(diǎn)的右孩子:"<<T->rchild->date<<"n"else cout<<"t"<<"節(jié)點(diǎn)沒(méi)有右孩子n

26、"else p=T->lchild;if(p) locate(T->lchild,x);locate(T->rchild,x);void Interface()/菜單界面函數(shù)system("cls");cout<<"nt-遍歷序列-n"cout<<"tt1.創(chuàng)建二叉樹(shù)n"cout<<"tt2.遍歷序列n"cout<<"tt3.結(jié)點(diǎn)的孩子信息n"cout<<"tt4.退出系統(tǒng)n"cout&l

27、t;<"tt請(qǐng)選擇(14):"cout<<"nt-n"void blxljm()/遍歷序列界面函數(shù)system("cls");cout<<"nt-二叉樹(shù)-n" cout<<"t(如果沒(méi)創(chuàng)建二叉樹(shù),不返回任何信息,按5返回主菜單)n"cout<<"tt1.先序遍歷二叉樹(shù)n"cout<<"tt2.中序遍歷二叉樹(shù)n"cout<<"tt3.后序遍歷二叉樹(shù)n"cout&

28、lt;<"tt4.層次遍歷二叉樹(shù)n"cout<<"tt5.返回主菜單n"cout<<"tt請(qǐng)選擇(15):"cout<<"nt-n"int Count(BiTree T)/計(jì)算節(jié)點(diǎn)數(shù)量if(T=NULL)return 0;return 1+Count(T->lchild)+Count(T->rchild);int Deep(BiTree T)/計(jì)算二叉樹(shù)的度if(T=NULL)return 0;int u=Deep(T->lchild);int v=Dee

29、p(T->rchild);if(u>v)return (u+1);return (v+1);void sjecs(BiTree &T)/選擇輸入模式,新建二叉樹(shù)bool End=false;if(T)Destory(T);T=NULL;cout<<"請(qǐng)選擇輸入二叉樹(shù)序列模式:(1:鍵盤輸入 2.文件輸入 3.返回主菜單)"<<endl;dochar Selection=cin.get();switch( Selection)case'1': jp(T);break;case'2':wj(T);bre

30、ak;case'3':End=true;while (!End);void jp(BiTree &T)/鍵盤輸入cout<<"輸入按先序建立二叉樹(shù)結(jié)點(diǎn)序列:t"cout<<"例如:ABDECFHGIJn"cout<<"輸入:"cin>>input;int i=0;CreateBiTree(T);int num=Count(T);int deep=Deep(T);cout<<" 二叉樹(shù)創(chuàng)建成功!n"cout<<"

31、 此二叉樹(shù)共有"<<num<<"個(gè)結(jié)點(diǎn)n"cout<<" 且該二叉樹(shù)的深度為:" <<deep<< " (按3返回主菜單界面)n"cout<<"請(qǐng)輸入選項(xiàng):"void wj(BiTree &T)/文件輸入 ifstream fi("a.txt");if(!fi)cout<<"數(shù)據(jù)文件不存在!n"exit(0);fi>>input;int i=0;CreateBiTree(T);int num=Count(T);int deep=Deep(T);cout<<" 二叉樹(shù)創(chuàng)建成功!n"cout<<" 此二叉樹(shù)共有"<<num<<"個(gè)結(jié)點(diǎn)n"cout<<" 且該二叉樹(shù)的深度為:" <<deep<< " (按3返回主菜單界面)n"cout<<"請(qǐng)

溫馨提示

  • 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)論