1、已知完全二叉樹具有967個結點,則其葉子結點個數爲:
詳解:
首先明確一點該二叉樹是一棵二叉樹,那可以使用二叉樹的一些性質。
從第一層開始計算每層的節點個數:1,2,4,8,16,32,64,128,256,512,1024...
將前9層的結點數量全部加起來有511個,如果加上第十層1024,則超過967,所以該完全二叉樹肯定是有十層的,所以葉子結點分佈在第9層和第10層,且第10層全部都是葉子結點。
設第9層的葉子個數爲b,第9層的分支結點個數爲a;
由於是完全二叉樹,又該樹有10層,所以第9層肯定有2^(9-1) = 256個結點,則有關係式:
a + b = 256 ---------------(1)
又第9層的分支結點個數爲a,那麼第10層的葉子個數爲2*a, 或者2*a-1 個,對於這兩種情況,可以根據總的結點個數來確定,因爲967是一個奇數,又第1層根節點只有一個,總的結點個數減去1,則爲966,是一個偶數,所以第10層的葉子個數肯定爲2*a個。
已知前9層共有1+2+4+8+16+32+64+128+256 = 511個結點,第10層有2*a個結點,所以結點總數爲前9層的總數加上第10層的個數,則有關係式:
2*a + 511 = 967 ---------------(2)
結合關係式(1)(2),可解得a = 228, b = 28,
葉子結點總數爲第9層的葉子數加上第10層的葉子數:b + 2*a = 28 + 2 * 228 = 484。
2、在一棵度爲4的樹T中,如有20個度爲4的結點,10個度爲3的結點,1個度爲2的結點,10個度爲1的結點,則樹T中的葉子結點個數爲:
解:設結點總數爲n,葉子結點個數爲m。
則結點總數: n = 20 + 10 + 1 + 10 + m ---------------(1)
還有一個關係式是關於結點總數和總度數的。
假如將“度”理解爲一根繩子,對於每一棵樹,我們都很清楚,每一個結點都是由一個度牽引着的,除了根節點這個特殊結點沒有被度牽引。所以,總結點數是總的度數加上根節點的數目,而根節點只有一個,所以總結點數 = 總的度數 + 1,由此,可以得到下面的結點總數和度總數的關係式:
n = 20*4 + 10*3 + 1*2 + 10*1 + m*0 + 1 ---------------(2)
聯合關係式(1)(2),可解得m = 82。
3、一棵度爲3的樹中,有3度結點100個,有2度結點200個,則葉子結點個數爲:
解:雖然這棵樹不是二叉樹,但是有些性質也是適用的。其中,最重要的一個性質是結點總數和總度數的關係。
設1度結點共有a個,葉子結點共有b個,總的結點個數爲n,則有以下關係式:
n = 100 + 200 + a + b
n = 3 * 100 + 2 * 200 + 1 * a + 0 * b + 1
聯合以上兩個關係式可以解得 b = 401,即葉子個數爲401個。
總結:
大部分關於二叉樹的計算問題,只要僅僅抓住二叉樹和樹的性質,基本上都能很快解決。
所以對於二叉樹的性質要非常熟悉,不僅僅要知道性質的內容,也要知道性質的推倒過程。