我們在上一章中,學習了二叉樹的數據結構。因為二叉樹的特殊性,它不同於普通的樹,所以可以使用順序存儲結構來存儲。但是,用順序存儲結構會存在浪費空間的弊端。之后,我們學習了二叉鏈表。用鏈式存儲結構存儲樹,結點結構為一個數據域data,兩個指針域lchild、rchild。樹的數據結構講完 ...
: : 一:二叉樹 .二叉樹的性質 :在二叉樹的第i層上至多有pow ,i 個結點 i gt 。 :深度為k的二叉樹至多有pow ,k 個結點 k gt 。 :對任何一顆二叉樹T,如果其終端結點的個數為n ,度為 的結點數為n ,則n n 。 :具有n個結點的完全二叉樹的深度為log n 取不大於它的最大正整數 。 :對於一顆有n個結點的完全二叉樹,對任一結點i i gt amp amp i l ...
2018-11-20 00:22 0 1183 推薦指數:
我們在上一章中,學習了二叉樹的數據結構。因為二叉樹的特殊性,它不同於普通的樹,所以可以使用順序存儲結構來存儲。但是,用順序存儲結構會存在浪費空間的弊端。之后,我們學習了二叉鏈表。用鏈式存儲結構存儲樹,結點結構為一個數據域data,兩個指針域lchild、rchild。樹的數據結構講完 ...
線索二叉樹 (threaded binary tree) 上圖所示的二叉鏈表,存在多個空指針域。假設一個二叉鏈表的結點數為n,則共有2n個指針域。而n個結點的二叉樹共有n-1條分支。所以空指針域的個數為:2n - (n-1) = n+1。 可以在這 ...
實驗內容 設計一個與二叉樹基本操作相關的演示程序,要求實現以下功能: (1)創建二叉樹。按照用戶需要的二叉樹,構建二叉樹。 (2)將創建的二叉樹以樹狀形式輸出。 (3)分別以先序,中序,后序三種遍歷方式訪問二叉樹。 (4)輸出二叉樹的葉子結點以及葉子結點的個數。 (5)輸出二叉樹的高度 ...
二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞歸或者用棧輔助實現非遞歸的遍歷。二叉樹作為存儲結構時,一個節點只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者后繼。為了保存這種在遍歷中需要的信息,我們利用二叉樹中指向左右子樹的空指針來存放節點的前驅或后繼信息。 也就是說 ...
遍歷二叉樹是以一定規則將二叉樹中結點排列成一個線性序列即是對一個非線性結構進行線性化操作,使除第一個和最后一個節點外,每一個節點有且只有一個直接前驅,直接后繼 二叉樹作為存儲結構只能找到節點的左孩子右孩子信息,而不能直接得到結點在任一序列中的前驅和后繼,這種信息只有在遍歷的動態過程中可以看到 ...
二叉樹的線索化: 二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞歸或者用棧輔助實現非遞歸的遍歷。用二叉樹作為存儲結構時,取到一個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者后繼。 為了保存這種在遍歷中需要的信息,我們利用二叉樹中指向左右子樹的空指針來存放 ...
1.遍歷前序線索二叉樹 如果當前結點有左孩子,則應該更新p指向左孩子,否則指向右孩子,這與中序遍歷線索二叉樹不同,中序遍歷時,能夠確定當前結點的左子樹一定被訪問過了,直接更新p指向右孩子 2.前序線索化二叉樹 3.刪除線索二叉樹所占空間 ...
后序線索二叉樹中,結點的后繼: 如果結點的雙親有右孩子,則結點的后繼為雙親的右子樹中第一個被訪問的結點 如果結點的雙親沒有右孩子,則結點的后繼為雙親 如果結點為雙親的右孩子,則結點的后繼為雙親 因為找到后序遍歷中,找到結點的后繼需要知道節點的雙親,所以可以用三叉鏈表 ...