二叉樹的儲存結構

2021-09-26 02:50:55 字數 903 閱讀 8185

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 順序儲存結構 二叉樹的順序儲存,就是用一組連續的儲存單元存放二叉樹中的結點。因此,必須把二叉樹的所有結點安排成為乙個恰當的序列,結點在這個序列中的相互位置能反映出結點之間的邏輯關係,用編號的...