二叉樹的存儲-順序存儲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
有時,爲了便於找到結點的雙親,在結點結構中增長一個指向其雙親結點的指針域
三叉連接