資源描述:
《二叉樹的建立及遍歷實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實驗三:二叉樹的建立及遍歷【實驗?zāi)康摹浚?)掌握利用先序序列建立二叉樹的二叉鏈表的過程。(2)掌握二叉樹的先序、中序和后序遍歷算法?!緦嶒瀮?nèi)容】1.編寫程序,實現(xiàn)二叉樹的建立,并實現(xiàn)先序、中序和后序遍歷。如:輸入先序序列abc###de###,則建立如下圖所示的二叉樹。并顯示其先序序列為:abcde中序序列為:cbaed后序序列為:cbeda【實驗步驟】1.打開VC++。2.建立工程:點File->New,選Project標(biāo)簽,在列表中選Win32ConsoleApplication,再在右邊的框里為工程起好名字,選好路徑,點OK->
2、finish。至此工程建立完畢。3.創(chuàng)建源文件或頭文件:點File->New,選File標(biāo)簽,在列表里選C++SourceFile。給文件起好名字,選好路徑,點OK。至此一個源文件就被添加到了你剛創(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);}【實驗心得】這次實驗主要是通過先序序列建立二叉樹,和二叉樹的先序、中序、后續(xù)遍歷算法。通過這次實驗,我鞏固了二叉樹這部分知識,從中體會理論知識的重要性。在做實驗之前,要充分的理解本次實驗的理論依據(jù),這樣才能達到事半功倍的效果。如果在沒有真正理解實驗原理之盲目的開始實驗,只會浪費時間和精力。例如進行
6、二叉樹的遍歷的時候,要先理解各種遍歷的特點。先序遍歷是先遍歷根節(jié)點,再依次先序遍歷左右子樹。中序遍歷是先中序遍歷左子樹,再訪問根節(jié)點,最后中序遍歷右子樹。而后序遍歷則是先依次后續(xù)遍歷左右子樹,再訪問根節(jié)點。掌握了這些,在實驗中我們就可以融會貫通,舉一反三。所以,這次實驗讓我懂得了理論知識的重要性,只有領(lǐng)悟了最基本的知識,在實驗過程中我們才能夠獨立的思考,大膽的推斷,不斷的創(chuàng)新,進而提高動手能力。