資源描述:
《二叉樹的建立及遍歷實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實(shí)驗(yàn)三:二叉樹的建立及遍歷【實(shí)驗(yàn)?zāi)康摹浚?)掌握利用先序序列建立二叉樹的二叉鏈表的過程。(2)掌握二叉樹的先序、中序和后序遍歷算法?!緦?shí)驗(yàn)內(nèi)容】1.編寫程序,實(shí)現(xiàn)二叉樹的建立,并實(shí)現(xiàn)先序、中序和后序遍歷。如:輸入先序序列abc###de###,則建立如下圖所示的二叉樹。并顯示其先序序列為:abcde中序序列為:cbaed后序序列為:cbeda【實(shí)驗(yàn)步驟】1.打開VC++。2.建立工程:點(diǎn)File->New,選Project標(biāo)簽,在列表中選Win32ConsoleApplication,再在右邊的框里為工程起好名字,選好路徑,點(diǎn)OK->
2、finish。至此工程建立完畢。3.創(chuàng)建源文件或頭文件:點(diǎn)File->New,選File標(biāo)簽,在列表里選C++SourceFile。給文件起好名字,選好路徑,點(diǎn)OK。至此一個(gè)源文件就被添加到了你剛創(chuàng)建的工程之中。4.寫好代碼5.編譯->鏈接->調(diào)試#include#include#defineOK1#defineOVERFLOW-2typedefintStatus;typedefcharTElemType;typedefstructBiTNode{TElemTypedata;structBiTNo
3、de*lchild,*rchild;}BiTNode,*BiTree;StatusCreateBiTree(BiTree&T){TElemTypech;scanf("%c",&ch);if(ch=='#')T=NULL;else{if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))returnOVERFLOW;T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}returnOK;}//CreateBiTreevoidPreOrder(B
4、iTreeT){if(T){printf("%c",T->data);PreOrder(T->lchild);PreOrder(T->rchild);}}voidInOrder(BiTreeT){if(T){InOrder(T->lchild);printf("%c",T->data);InOrder(T->rchild);}}voidPostOrder(BiTreeT){if(T){PostOrder(T->lchild);PostOrder(T->rchild);printf("%c",T->data);}}voidmain(){
5、BiTreeT;CreateBiTree(T);printf("先序遍歷序列:");PreOrder(T);printf("中序遍歷序列:");InOrder(T);printf("后序遍歷序列:");PostOrder(T);}【實(shí)驗(yàn)心得】這次實(shí)驗(yàn)主要是通過先序序列建立二叉樹,和二叉樹的先序、中序、后續(xù)遍歷算法。通過這次實(shí)驗(yàn),我鞏固了二叉樹這部分知識(shí),從中體會(huì)理論知識(shí)的重要性。在做實(shí)驗(yàn)之前,要充分的理解本次實(shí)驗(yàn)的理論依據(jù),這樣才能達(dá)到事半功倍的效果。如果在沒有真正理解實(shí)驗(yàn)原理之盲目的開始實(shí)驗(yàn),只會(huì)浪費(fèi)時(shí)間和精力。例如進(jìn)行
6、二叉樹的遍歷的時(shí)候,要先理解各種遍歷的特點(diǎn)。先序遍歷是先遍歷根節(jié)點(diǎn),再依次先序遍歷左右子樹。中序遍歷是先中序遍歷左子樹,再訪問根節(jié)點(diǎn),最后中序遍歷右子樹。而后序遍歷則是先依次后續(xù)遍歷左右子樹,再訪問根節(jié)點(diǎn)。掌握了這些,在實(shí)驗(yàn)中我們就可以融會(huì)貫通,舉一反三。所以,這次實(shí)驗(yàn)讓我懂得了理論知識(shí)的重要性,只有領(lǐng)悟了最基本的知識(shí),在實(shí)驗(yàn)過程中我們才能夠獨(dú)立的思考,大膽的推斷,不斷的創(chuàng)新,進(jìn)而提高動(dòng)手能力。