樹結點數
0.概念
樹(tree)指每個結點只有一個前件(也稱父結點)、有多個后件(也稱子結點)的非線性結構。沒有父結點的結點稱為根結點,每棵樹只能有一個根結點;沒有子結點的結點稱為葉子結點。樹結構中,一個結點擁有子結點的個數稱為該結點的度;所有結點中最大的度稱為這棵樹的度。
1.結點數計算
假設樹度為 x 的結點數為 nx ,則一棵樹可以表示為:
| x | 0 | 1 | 2 | 3 | ... |
|---|---|---|---|---|---|
| nₓ | n₀ | n₁ | n₂ | n₃ | ... |
根據樹的形成過程,每增加一個度為 x 的結點,總結點數將增加 x 個。所以:
\[Sum = \sum n_i = 1 + \sum i \times n_i \]
其中 Sum 表示樹的總節點數。
同理,每增加一個度為 x 的結點,葉子節點數將增加 x-1 個。所以:
\[Sum' = n_0 = 1 + \sum n_i(i-1) = 1 + \sum_{i=2} n_i(i-1) \]
其中 Sum' 表示樹的葉子結點數。
2.二叉樹特例
二叉樹度小於3的樹。即每個結點最多有兩個子結點。有如下性質:
- 第k層上最多有 2k-1 個結點。
- k層二叉樹最多有 2k-1 個結點。
- 葉子結點總比度為2的結點多一個。
\[Sum' = 1 + \sum_{i=2} n_i(i-1) = 1 + n_2 \]
- 具有n個結點的二叉數深度最少為 [log2(n+1)]+1 ,中括號表示取整。
