二叉樹的存儲-順序存儲
完全二叉樹:對結點按照上至下、從左到右的次序進行存儲
特點:
結點間關系蘊含在其存儲位置中(性質5)
1、非根結點i的父結點序號為[i/2]
2、結點i的左孩子序號為2i
3、結點i的右孩子序號為2i+1
適用於滿二叉樹和完全二叉樹
二叉樹性質5
如果對一棵有n個結點的完全二叉樹的結點按層序編號,則對任一結點i(1<=i<=n),有:
1、如果i=1,則結點i是二叉樹的根,無雙親;
如果i>i,則其雙親是[i/2]
2、如果2i>n,則結點i無左孩子;
如果2i<=n,則其左孩子是2i
3、如果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
有時,為了便於找到結點的雙親,在結點結構中增加一個指向其雙親結點的指針域
三叉鏈接