滿二叉樹
一顆深度爲k且有2^(k-1)個節點的二叉樹稱爲滿二叉樹
完全二叉樹
當二叉樹的深度爲h時,它的h層節點必須都是連續靠左並不可隔開的(滿二叉樹也符合),並且1~h-1層的結點數都達到最大個數(即1~h-1層爲一個滿二叉樹)。
性質一
所有的葉節點都出現在第k層或者k-1層。
性質二
如果其右子樹的最大層次爲l,那麼其左子樹的最大層次爲l或者l+1
性質三
具有n個節點的完全二叉樹的深度爲[log2n] + 1 ,其中[log2n]表示log2n的整數部分
- 證明: 假設當前二叉樹的深度爲k,則2^ (k-1) - 1 < n < 2 ^ (k) - 1 —> 2 ^ (k - 1 ) <= n < 2 ^ (k) - 1
- 取對數得: k - 1 <= log2n < k,因爲k是證書 k = log2n + 1
性質四【怎麼理解不知道】
有N個節點的完全二叉樹各節點如果用順序方式存儲,如數組存儲:
- left = index * 2 + 1
- right = index * 2 + 2
- 序數 >= floor(N/2)都是葉子節點
如果對一棵有n個節點的完全二叉樹的節點按層序編號
性質 | 滿二叉樹 | 完全二叉樹 |
---|---|---|
高度 | k | k |
第i層節點數 | 2^(i-1) | 1 <= x < 2^(i-1) |
總節點數 | 2^(k) - 1 | 2^(k-1) <= n< 2 ^ (k) - 1 |