大學課程實驗2指導 二叉樹的建立與遍歷

2022-06-30 17:00:14 字數 1918 閱讀 4556

實驗目的:

實驗內容:

對於如下的二叉樹:

要求程式設計實現:

1.以遞迴方式建立該二叉樹。

2.以遞迴方式實現對該二叉樹的先序、中序和後序遍歷。

步驟1:包含必要的函式庫

1 #include 2 #include
步驟2:實現結構體bitnode

1 typedef struct

bitnodebitnode, *bitree;

步驟3:實現函式create_bitree()

void create_bitree(bitree *t)

f提示1:引數t為指向"二叉樹的頭結點指標"的指標即

bitree *t;

等價於bitnode **t;

f提示2:由於需要在函式中修改t所指向的指標的內容(即呼叫create_bitree ()之前,指向"二叉樹的根結點"的指標為空,呼叫create_bitree ()之後,該指標指向新建立的根結點),因此需要在t前加"*"號。

f(*t)->data=ch;

等價於(*(*t)).data=ch;

f提示4:由於函式的引數型別為"指向指標的指標",因此在建立左、右子數時,需要傳入左、右的根結點的位址,即&(*t)->lchild或&(*t)->rchild。

f提示5:malloc()函式是在函式庫stdlib.h中定義的,因此必須引入該庫

1

/*構造二叉樹的二叉鍊錶t */2

3void create_bitree(bitree *t)

3031 }

步驟4:實現遍歷函式preorder()、inorder()、postorder()

提示5:這些函式均採用遞迴方式實現。另外,在訪問某個結點時,無需採用課本中的函式指標visit,僅需要利用printf()函式列印該結點的data域即可。三個遍歷函式的宣告如下:

1

void

preorder(bitree t);23

void

inorder(bitree t);45

void postorder(bitree t);

步驟5:在主函式中實現對二叉樹的建立以及前、中、後序遍歷

程式提示輸入測試資料

輸入測試資料

最終輸出效果

思考題:

1.思考如何實現以非遞迴方式遍歷二叉樹?

1

/*先序遍歷二叉樹*/2

3void

preorder(bitree t)

1415}16

17/*

中序遍歷二叉樹

*/18

19void

inorder(bitree t)

3031}32

33/*

後序遍歷二叉樹

*/34

35void

postorder(bitree t)

4647 }

樹和二叉樹的實驗2

一 實驗目的 1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 1 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用鏈式儲存結構方法儲存。實現樹的構造,並完成 1 用前序遍歷 中序遍歷 後序遍歷輸出結點資料...

實驗五 樹和二叉樹的實驗2

使用二叉樹的鏈式儲存結構,建立一棵二叉樹,進行前序 中序以及後序遍歷,同時求得二叉樹的結點個數以及葉子結點個數。程式源 ifndef bitree h define bitree h struct binode char data binode lchild,rchild class bitree ...

實驗 5 樹和二叉樹的實驗 2

1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 1 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用鏈式儲存 結構方法儲存。實現樹的構造,並完成 1 用前序遍歷 中序遍歷 後序遍歷輸出結點資料 2 以合理...