---------注:本文所用的術語定義均來自國外大學和計算機文獻使用的定義,非國內教材。層次編號從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,則有個非葉子結點(內部結點)
2、總結點數是n,則層次數是
3、完全二叉樹可以使用數組來作為高效的存儲實現,因為完全二叉樹的邏輯關系可以通過結點的編號運算得來,且這種關系對於所有的完全二叉樹都是固定的。如果使用鏈式的,則需要浪費空間,訪問速度也不如數組。 下面給出運算規律:

完美二叉樹
定義: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、因為完美二叉樹既屬於完全二叉樹,因此可以使用數組來作為高效的存儲實現。