二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。
其中,data域存放某結點的資料資訊;lchild與rchild分別存放指向左孩子和右孩子的指標,當左孩子或右孩子不存在時,相應指標域值為空(用符號∧或null表示)。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為二叉鍊錶,如圖5-8所示。
(a) 一棵二叉樹 (b) 二叉鍊錶儲存結構
二叉樹的二叉鍊錶表示示意圖
為了方便訪問某結點的雙親,還可以給鍊錶結點增加乙個雙親欄位parent,用來指向其雙親結點。每個結點由四個域組成,其結點結構為:
這種儲存結構既便於查詢孩子結點,又便於查詢雙親結點;但是,相對於二叉鍊錶儲存結構而言,它增加了空間開銷。利用這樣的結點結構表示的二叉樹的鏈式儲存結構被稱為三叉鍊錶。
二叉樹的三叉鍊錶表示示意圖
儘管在二叉鍊錶中無法由結點直接找到其雙親,但由於二叉鍊錶結構靈活,操作方便,對於一般情況的二叉樹,甚至比順序儲存結構還節省空間。因此,二叉鍊錶是最常用的二叉樹儲存方式。
二叉樹的鏈式儲存
#define datatype char //定義二叉樹元素的資料型別為字元
typedef struct node //定義結點由資料域,左右指標組成
bitree;
二叉樹鏈式儲存結構
由二叉樹定義得知,二叉樹的結點由乙個元素和分別指向其左 右子樹的兩個分支構成,則表示二叉樹的鍊錶中的結點至少包含3個域,如下圖。二叉樹建立 程式是如何建立出二叉樹的?以下圖為例 從主函式開始執行 定義乙個bitnode型別的指標root,將指標root的位址賦給t t是乙個bitnode型別指標的指...
二叉樹的鏈式儲存結構(線索二叉樹)
一 鏈式儲存結構 由於順序儲存二叉樹的空間利用率較低,因此二叉樹一般都採用鏈式儲存結構,用鍊錶結點來儲存二叉樹中的每個結點。在二叉樹中,結點結構通過包括若干資料域和若干指標域,二叉鍊錶至少包含3個域 資料域 data 左指標域 lchild和右指標域 rchild,如下圖所示 其中,n 個結點的二叉...
二叉樹的鏈式儲存
實現二叉樹的基本操作 建立 遍歷 計算深度 結點數 葉子數等。輸入c,先序建立二叉樹,表示空節點 輸入h 計算二叉樹的高度 輸入l 計算二叉樹的葉子個數 輸入n 計算二叉樹節點總個數 輸入1 先序遍歷二叉樹 輸入2 中序遍歷二叉樹 輸入3 後續遍歷二叉樹 輸入f 查詢值 x的節點的個數 輸入p 以縮...