實驗目的:
實驗內容:
對於如下的二叉樹:
要求程式設計實現:
1.以遞迴方式建立該二叉樹。
2.以遞迴方式實現對該二叉樹的先序、中序和後序遍歷。
步驟1:包含必要的函式庫
1 #include 2 #include步驟2:實現結構體bitnode
1 typedef struct步驟3:實現函式create_bitree()bitnodebitnode, *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步驟4:實現遍歷函式preorder()、inorder()、postorder()/*構造二叉樹的二叉鍊錶t */2
3void create_bitree(bitree *t)
3031 }
提示5:這些函式均採用遞迴方式實現。另外,在訪問某個結點時,無需採用課本中的函式指標visit,僅需要利用printf()函式列印該結點的data域即可。三個遍歷函式的宣告如下:
1步驟5:在主函式中實現對二叉樹的建立以及前、中、後序遍歷void
preorder(bitree t);23
void
inorder(bitree t);45
void postorder(bitree t);
程式提示輸入測試資料
輸入測試資料
最終輸出效果
思考題:
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 以合理...