【樹3】滿二叉樹、完全二叉樹、完美二叉樹


---------注:本文所用的術語定義均來自國外大學和計算機文獻使用的定義,非國內教材。層次編號從1開始-------------

滿二叉樹(Full Binary Tree)

定義a binary tree T is full if each node is either a leaf or possesses exactly two child nodes.

大意:每一個結點要么度為0(是葉子結點),要么度為2(有2個孩子結點)。

圖例

 

性質:如果T是一個非空滿二叉樹,則

(a) 如果有 N2 個 非葉子結點,則 葉子結點的個數 是 N2+1

(b) 如果有 N2 個 非葉子結點,則總的結點數是 2N2+1

(c) 如果總結點數是N ,則非葉子結點個數是 (N-1)/2

(d)  如果總結點數是N, 則葉子結點個數是 (N+1)/2

(e) 如果有N0 個葉子結點,則總結點數是2N0-1

(f) 如果有N0 個葉子結點,則非葉子結點數是N0-1

也就是說,在一個非空滿二叉樹中,只要你知道了 【總結點數 N ,葉子結點數N0 , 非葉子結點數 N2 】 三者之一,就可以推導出其它二者的值。

證明

(a) 設度為2的結點(非葉子結點)個數為N2,度為0的結點(葉子結點)個數為N0,總結點數為N。邊有E條。

N2+N0 = N

N - 1 = L (樹的邊數比結點數少1)

2N2 = L  ( 邊都是度為2的結點引出的,且引出2條 )

聯立得:N0 = N2+1

證明: 

(b) 

N2+N0 = N

N0 = N2+1  (   由(a)  可知  )

聯立得:N =2N2+1

......

其余的都可以由(a)中的結論輕松推導出,不再贅述。

 

完全二叉樹(Complete Binary Tree)

定義a binary tree T with n  levels is complete if all levels except possibly the last are completely full,and the last level has all its nodes to the left side.

大意:除了最后一層可能不是”滿的“,其它層都必須是”滿的“,且最后一層的結點都在左邊連續出現。

注意

1、”滿的“意思是,這一層的節點數達到最大值。

2、最后一層可能不是”滿的“,說明可以存在是”滿的“情況,如果是這樣,那就是一個完美二叉樹。完美二叉樹是特殊的完全二叉樹。

通俗的說,完全二叉樹從root到 倒數第二層 之間形成是完美二叉樹,而最后一層可以不是”滿的“,也可以是”滿的“,如果不是”滿的“,則最后一層的結點必須靠左連續出現。

圖例

 

性質

1、總結點數是n,則有個非葉子結點(內部結點)

⌊ n / 2 ⌋ {\displaystyle \lfloor n/2\rfloor } \lfloor n/2\rfloor個內部結點。

2、總結點數是n,則層次數是

 

3、完全二叉樹可以使用數組來作為高效的存儲實現,因為完全二叉樹的邏輯關系可以通過結點的編號運算得來,且這種關系對於所有的完全二叉樹都是固定的。如果使用鏈式的,則需要浪費空間,訪問速度也不如數組。 下面給出運算規律:
給完全二叉樹的結點,從上到下,從左到右依次從0開始編號作為這個結點的索引,則:
 
如果i==0,則它是root結點。
如果i >0 ,則他的父結點的索引為:
 
如果 2*(i+1) > n ,則它無左孩子,那么他一定是葉子結點。
       2*(i+1) <=n ,  則他的左孩子的索引為  2i +1
 
如果 2*(i+1)+1 >  n,則他無右孩子。
        2*(i+1)+1 <=  n,則它的右孩子的索引為 2i+2
 

完美二叉樹

定義A binary tree with all leaf nodes at the same depth. All internal nodes have degree 2.

大意:所有的非葉子結點的度都達到最大值2,葉子結點都在同一層,也就是最下層。

圖例:

 

任何一個完美二叉樹 既屬於滿二叉樹,也屬於完全二叉樹。因此它擁有滿二叉樹和完全二叉樹的所有性質

完美二叉樹從外觀上看他是一個等邊三角形。他的每一層都被填充滿。

 

性質

1、層數為k的完美二叉樹,其總結點數為 2k  - 1    (k>=1)

2、第i層結點數是 2(i-1)         (i>=1)

3、因為完美二叉樹既屬於完全二叉樹,因此可以使用數組來作為高效的存儲實現。

 


免責聲明!

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



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