先上題目:
一顆有n(n>0)個節點的滿二叉樹共有幾個葉子節點和非葉子節點?請寫出解題過程
方法有兩種:設有x個葉子節點和y個非葉子節點
法一:若該該二叉樹有k層(k>0),則
第一層有一個節點、
第二層有兩個節點
第三層有四個節點
第四層有八個幾點
……
第k層有2的k-1次方個節點
則一顆k層的滿二叉樹共有1+2+4+……+2的k-1次方= n(1)
(1)*2 = 2+4+……+2的k-1次方+2的k次方 = 2n(2)
由(1)、(2)易得n = 2的k次方 - 1(3)
又因爲葉子節點x = 2的k-1次方 = y+1(4)
由(3)、(4)易得x=(n+1)/2,y=(n-1)/2
法二:n = x + y(1)
經過求索思考得 y = x - 1(2)
x = (n+1)/2,y = n - y = x - 1 = (n - 1)/2
挺有意思的,鍛鍊下大腦別生鏽了