在二叉樹的理論推導以及一些高頻類型題中,我們經常需要計算二叉樹的總結點數,某一層的結點數以及已知結點數反推樹的高度,本文圍繞這幾個高頻知識點,歸納總結以下公式。
公式
(1)非空二叉樹葉子結點數 = 度為2的結點數 + 1 即,$ N_0 = N_2 + 1 $
(2)非空二叉樹上第K層至多有$ 2^{k-1} $ 個結點($ K \ge 1 $)
(3)高度為H的二叉樹至多有$ 2^H - 1 $ 個結點($ H \ge 1 $)
(4)具有N個($ N > 0 $)結點的完全二叉樹的高度為 $ \lceil log_2{(N+1)} \rceil $ 或 $ \lfloor log_2{N} \rfloor + 1 $
(5)對完全二叉樹按從上到下、從左到右的順序依次編號1,2,...,N,則有以下關系:
① 當 $ i > 1 $ 時,結點 $ i $ 的雙親結點編號為 $ \lfloor i/2 \rfloor $ ,即當 $ i $ 為偶數時,其雙親結點的編號為 $ i/2 $ ,它是雙親結點的左孩子;當 $ i $ 為奇數時,其雙親結點的編號為 $ (i-1)/2 $ ,它是雙親結點的右孩子。
② 當 $ 2i \le N $ 時,結點i的左孩子編號為 $ 2i $ ,否則無左孩子。
③ 當 $ 2i+1 \le N $ 時,結點i的右孩子編號為 $ 2i+1 $ ,否則無右孩子。
④ 結點 $ i $ 所在層次(深度)為 $ \lfloor log_2{i} \rfloor +1 $ 。(設根結點為第1層)
經典例題
**408考研-2011-4** 若一棵完全二叉樹有768個結點,則二叉樹中葉結點的個數是_____。
A.257 B.258 C.384 D.385
解法1
根據完全二叉樹的性質,最后一個分支結點的序號為 $ \lfloor n/2 \rfloor = \lfloor 768/2 \rfloor = 384 $ ,故葉子結點的個數為 $ 768 - 384 = 384 $
解法2
由二叉樹的性質 $ N = N_0 + N_1 + N_2 $ 和 $ N_0 = N_2 + 1 $ 可知
$ N = 2N_0 - 1 + N_1 , 2N_0 - 1 + N_1 = 768 $
顯然,$ N_1 = 1 , 2N_0 = 768 ,則 N_0 = 384 $
解法3
完全二叉樹的葉子結點只可能出現在最下兩層,由題可計算完全二叉樹的高度為10。
第10層的葉子結點數為 $ 768 - (2^9-1) = 257 $
第10層的葉子結點在第9層共有 $ \lceil 257/2 \rceil = 129 $ 個父節點
第9層的葉子結點數為 $ (2^9 - 1) - 129 = 127 $
則葉子結點總數為 $ 257 + 127 = 384 $