1. 順序儲存結構 :
完全二叉樹:按從上至下、從左到右順序儲存
n個結點的完全二叉樹的結點父子關係:
非根結點(序號 i > 1)的父結點的序號是 i / 2;
結點(序號為 i )的左孩子結點的序號是 2i,(若2 i <= n,否則沒有左孩子);
結點(序號為 i )的右孩子結點的序號是 2i+1,(若2 i +1<= n,否則沒有右孩子);
但是一般不用該方式,空間浪費嚴重
另一種順序結構:? ? ?
typedef
struct
gather;
int
find
(elementtype x,gather s)
intcombination
(elementtype x,elementtype y,gather s)
else
}}
但根據情況的不同,有時採用陣列下標==儲存的值,下標對應的內容則為其父節點的下標,
而父節點對應的內容則為其子節點的個數(用負數表示),如此可大大提高查詢效率。
如下圖所示:(圖中為-1,未改)
2.鍊錶儲存 :(兒子-兄弟表示法 )
typedef
struct tree_node* tree;
struct tree_node
;
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...
二叉樹的儲存結構
二叉樹是非線性結構,即每個資料結點至多只有乙個前驅,但可以有多個後繼。它可採用順序儲存結構和鏈式儲存結構。1 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...