二叉樹的存儲結構

二叉樹的存儲-順序存儲node

徹底二叉樹:對結點按照上至下、從左到右的次序進行存儲數組

特色:指針

結點間關係蘊含在其存儲位置中(性質5)blog

一、非根結點i的父結點序號爲[i/2]class

二、結點i的左孩子序號爲2i二叉樹

三、結點i的右孩子序號爲2i+1im

 適用於滿二叉樹和徹底二叉樹d3

 

二叉樹性質5鏈表

若是對一棵有n個結點的徹底二叉樹的結點按層序編號,則對任一結點i(1<=i<=n),有:數據

一、若是i=1,則結點i是二叉樹的根,無雙親;

若是i>i,則其雙親是[i/2]

二、若是2i>n,則結點i無左孩子;

若是2i<=n,則其左孩子是2i

三、若是2i+1>n,則結點i無右孩子;若是2i+1<=n,則其右孩子是2i+1

 

 通常二叉樹也能夠採用順序存儲結構,但會形成空間的浪費

 

 深度爲k且只有k個節點的單支樹,須要長度爲2(k-1)次方的一維數組

 

 二叉樹的存儲-鏈式存儲(1)

二叉樹結點由一個數據元素和分別指向其左、右子樹和兩個分支構成

表示二叉樹的鏈表中的結點至少包含3個域:數據域和左、右指針域

ypedef struct BiTnode

{TElemType data;

struct BiTNode *Lchild, *rchild;

}BiTNode,*BiTree;

 

lchild  data  rchild

    data

       ↙               ↘

lchild      rchild

 

有時,爲了便於找到結點的雙親,在結點結構中增長一個指向其雙親結點的指針域

三叉連接

相關文章
相關標籤/搜索