我需要一個通用公式來計算二叉樹的最小高度和二叉樹的最大高度。 (不是二叉查找樹)二叉樹高度
二叉樹高度
回答
想想如何改變樹的結構。
例如,如果樹完全不平衡,那麼這是最糟糕的情況 - 每個節點只有一個孩子。在最好的情況下,樹完成平衡,每個節點有兩個孩子。
由於聽起來像是功課,我會把它留在那裏。
的最大高度爲n和最小高度(即一個完美的二進制樹)的(對數基座2(N + 1)) - 1
最小高度來自公式n = 2 ^(h + 1)-1,只需求解h。 – 2009-12-23 07:09:32
如果有N個元素,二進制的最小高度樹將是log2(N)+1。
對於完整的二叉樹,最大高度將爲N/2。
對於非完全二叉樹,最大高度爲N.
首先可能會有一些差異,以計算機科學是如何計算的 高度一棵樹的,與高度的方法是在離散確定數學 (圖論),這可能是由於在任何一個節點(或頂點)存在數據,而在數學中,它是一種純粹的理論方法。
所以,也許最好你澄清你需要哪一個。
在離散數學中,樹被歸類爲m-ary樹,所以bin-ary樹是2元樹。同樣在任何給定的高度,最多可以有 2^h = L(葉)。這一點很重要,因爲它確認了根在高度爲零,因此2^0 = 1葉...... 1個頂點......根。
所以給定的n個頂點,樹的高度由下式給出 N = 2 ^(H + 1) - 1
由於你正在尋找小時,你必須採取二者的log 2的 公式n = 2側面^(H + 1) - 1
對於一個完整的二進制樹時,最大高度爲 的log 2(N + 1)= LOG 2(2 ^(H + 1)) 此等於上限(log2(n + 1) - 1)= h
對於非滿二叉樹,最大高度=(n - 1) 因此,如果您有n個頂點,由於上述公式(2^h = L),必須扣除根部以獲得最大高度
對於最小高度,根據上述規則進行外插。
對於任何二叉樹,最小高度爲h = ceiling(log(n + 1)/ log(2)-1) 。
如果根最多可以有2(0,1,2)任何數量的葉片,則:
- 的最大高度爲n-1個。當你的樹只有一片樹葉時就是這種情況。沒有節點有多個分支。
- 最小高度爲[log2(n)]其中[x]是x的整數部分。
爲了獲得最小高度,每個根必須有儘可能多的分支。在這種情況下,你會注意到,對於n = 1,height = 0;對於n = 2到n = 3,高度= 1;對於n = 4到n = 7,高度= 2;對於n = 8到n = 15,高度= 3等等
由此可以注意到,對於每個n,存在AP使得:
2^P < = N < 2 ^(P + 1)和p =高度,因此高度= [log2(n)]
N-節點數量。
H - 二叉樹的高度。
完全二叉樹:
然後,用H高度N將位於之間:
2^H <= N <= (2^(H+1) - 1)
因此,解決這個不等式;我們得到:
H <= lg(N) and H >= (lg(N+1) - 1)
因此,我們最終得到:
H = floor(lg(N)) = ceil((lg(N+1) - 1)) //as H is integer
(LG:日誌基地2)
二叉樹(不一定完成):
Max height = N;
Min Height = floor(lg(N)) = ceil((lg(N+1) - 1))
二叉樹完成時,我們獲得最小高度。
With n-nodes
可能的最大高度是floor(log(n))
= ceil (log(n+1))-1
。
隨着n-nodes
可能的最小高度是n-1
。
- 1. 獲取二叉搜索樹的高度
- 2. 返回二叉查找樹的高度
- 3. 查找二叉查找樹的高度
- 4. 無法找出二叉樹的高度
- 5. 完整二叉樹的高度
- 6. 二叉樹複雜度
- 7. 二叉樹的長度
- 8. 遞歸使用樹的高度的二叉樹的直徑?
- 9. 二叉樹到二叉搜索樹(BST)
- 10. 二叉樹 - 哪一種二叉樹
- 11. 二叉搜索樹 - 查找高度和深度
- 12. Python二叉樹
- 13. 非二叉樹
- 14. balanced()二叉樹
- 15. 二叉樹
- 16. JAVA:二叉樹
- 17. 二叉樹
- 18. 二叉樹值
- 19. 獲取無功能二叉樹的高度參數
- 20. 使用Prolog查找二叉樹的高度
- 21. 非遞歸程序找到二叉樹的最小高度
- 22. 使用隊列表在二叉樹中查找高度
- 23. 計算二叉搜索樹的深度?
- 24. 查找二叉樹的最大深度
- 25. 二叉查找樹的深度
- 26. 平衡二叉樹
- 27. 二叉樹轉移
- 28. 二叉樹方法
- 29. 鬆開二叉樹
- 30. 二叉搜索樹
你將需要更具體。 – Amber 2009-12-23 06:56:29