平衡二叉樹節點跟高度的關係

2021-08-20 06:51:36 字數 807 閱讀 8642

設f(n)為高度為n的平衡二叉樹最少含有的節點數,則:f(1) = 1;f(2) = 2; f(3) = 4;f(4) = 7;……

這些可以通過畫圖就能得到,但是當n很大時呢?其實有如下結論:f(n) = f(n-1) + f(n-2) +1,(n>=3)。這個遞推結論如何得到的呢?

引導問題:求一棵二叉樹的節點數目:

假設一顆二叉樹t,其左右子樹分別為tl,tr。又假設t的節點數目為f(t),tl,tr的節點數目分別為f(tl),f(tr)。則顯然:

f(t) = f(tl) + f(tr) + 1。

同樣假設t為高度為n的平衡二叉樹,其需要最少的節點數目為f(n)。又假設tl,tr為t的左右子樹,因此tl,tr也為平衡二叉樹。假設f1,f2為tl,tr的最少節點數,則,f(n) = f1+f2 +1。那麼f1,f2 到底等於多少呢?由於tl,tr與t一樣是平衡二叉樹,又由於我們知道t的最少節點數是f(n),其中n為t的高度,因此如果我們知道tl,tr的高度就可以知道f1,f2的值了。由平衡二叉樹的定義可以知道,tl和tr的高度要麼相同,要麼相差1,而當tl與tr高度相同(即:都等於n-1)時,我們算出來的f(n)並不能保證最小,因此只有當tl與tr高度相差一(即:乙個高度為n-1,乙個高度為n-2)時,計算出來的f(n)才能最小。此時我們假設tl比tr高度要高1(即:tl高度為n-1,tr高度為n-2),則有:f1 = f(n-1),f2 = f(n-2)。因此得到結論:f(n) = f(n-1) + f(n -2 ) + 1!

又有結論:深度為h的平衡二叉樹的最少節點數n=f(h+2)-1;

f(n)為斐波那契數列,

高度範圍:f(h+2)-1<=n

二叉樹節點數量關係

node 表示一棵樹節點總數量 node1 表示度為1的節點數量 node2 表示度為2的節點數量 leaf 表示葉子節點的數量 line 表示一棵樹中莖 也就是兩個節點之間的連線 的數量 顯然 node 1 line node node1 node2 leaf line node1 2 node2...

列印二叉樹節點

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。條件反射地想通過遞迴解決,結果硬是沒有找到合適的解決思路,也許遞迴的方式不是很適合這種型別的題目吧 利用佇列的先進先出 fifo 特性解決。每從佇列頭部獲取乙個節點,就將該節點的左右子節點存入佇列的尾部。如此往復,直至隊列為空。這篇部落格內的和 ...

二叉樹 節點分析

通過問題了解 問題一 某二叉樹中度為2的結點有18個,則該二叉樹中有 性質1 二叉樹的終端結點 葉子結點 數等於雙分支結點數加1.假設二叉樹中終端結點數為n0,單分支結點數為n1,雙分支結點數為n2,二叉樹中總結點數為n,因為二叉樹中所有結點度數均小於或等於2,所以有 n n0 n1 n2 另一方面...