數據結構 | 樹與二叉樹常用計算公式


在二叉樹的理論推導以及一些高頻類型題中,我們經常需要計算二叉樹的總結點數,某一層的結點數以及已知結點數反推樹的高度,本文圍繞這幾個高頻知識點,歸納總結以下公式。

公式

(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 $


免責聲明!

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



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