二叉樹的存儲結構


二叉樹的存儲-順序存儲

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

特點:

結點間關系蘊含在其存儲位置中(性質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

 

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

三叉鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM