二叉樹的儲存結構

2022-09-07 22:06:22 字數 772 閱讀 4745

二叉樹的儲存結構

順序儲存#define max_tree_size 100    //二叉樹最大節點數

typedef elemtype sqbitree[max_tree_size];     //0號位儲存根節點

sqbitree t;

二叉樹的順序儲存就是用一組位址連續的儲存單元來存放二叉樹的資料元素,c語言中常使用陣列實現。

對於完全二叉樹來說,採用順序儲存結構十分合適,因為它充分利用儲存空間。但對於一般的二叉樹,特別是那些單支結點(度為1)比較多的二叉樹來說,空間浪費十分巨大。而且插入和刪除也很不便,所以對於一般的二叉樹,採用鏈式儲存。

鏈式儲存:

由定義,二叉樹的乙個結點包括乙個資料元素和左子樹、右子樹的指標組成,所以二叉鍊錶中結點至少有三個域,左右指標域、資料域。

typedef struct bitnode

binode,*bitree;

n個結點的二叉鍊錶有2n個指標域,其中非空指標域 n-1個。空指標域n+1個。這些空指標域儲存其他資訊我們可以得到線索鍊錶。

因為二叉鍊錶訪問孩子結點比較簡單而訪問父母結點需要遍歷樹,所以可以再結點中加入指向雙親的指標域,即得到三叉鍊錶。

typedef struct tritnode

trinode,*tritree;

雙親鍊錶:利用二叉樹只有乙個前驅的特性,也可以只設計乙個指標域,讓其指向該結點的前驅,為了區分左右結點,設定乙個左右孩子標誌域,即每個結點有三個標誌域:資料域、、指標域、                                標誌域。

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...

二叉樹的儲存結構

二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...