我需要一个通用公式来计算二叉树的最小高度和二叉树的最大高度。 (不是二叉搜索树)
答案 0 :(得分:12)
首先,计算机科学计算方法可能会有所不同 树的高度,相对于离散数学确定高度的方式 (图论),这可能是由于任何一个节点都存在数据 (或顶点),而在数学中,它是一种纯粹的理论方法。
所以也许你最好澄清你需要哪一个。
在离散数学中,树木被归类为m-ary树,因此a bin-ary树是一棵2树。在任何给定的高度,也可以 最多2 ^ h = L(叶子)。这一点很重要,因为它确认了这一点 根在高度为零,因此2 ^ 0 = 1叶... 1顶点...根。
因此给定n个顶点,树的高度由公式给出 n = 2 ^(h + 1) - 1
由于你正在寻找h,你必须采取两边的log2 公式n = 2 ^(h + 1) - 1
对于完整的二叉树,最大高度为 log2(n + 1)= log2(2 ^(h + 1)) 这等于天花板(log2(n + 1) - 1)= h
对于非完整二叉树,最大高度=(n - 1) 因此,如果您有n个顶点,则必须减去根才能得到 最大高度,因为上面的上述公式(2 ^ h = L)
对于最小高度,从上述规则推断。
答案 1 :(得分:3)
如果你有N个元素,二叉树的最小高度将是log2(N)+1。
对于完整的二叉树,最大高度为N / 2.
对于非完整二叉树,最大高度为N.
答案 2 :(得分:3)
N - 节点数。
H - 二叉树的高度。
完整的二叉树:
然后,H高度N将位于:
PizzaStore
因此,解决这种不平等;我们得到:
2^H <= N <= (2^(H+1) - 1)
因此我们终于得到:
H <= lg(N) and H >= (lg(N+1) - 1)
(lg:log base 2)
二叉树(不一定完整):
H = floor( lg(N) ) = ceil( (lg(N+1) - 1) ) //as H is integer
当二叉树完成时,我们得到最小高度。
答案 3 :(得分:1)
想想树的结构如何变化。
例如,如果树完全不平衡,那么这是最糟糕的情况 - 每个节点将只有一个子节点。在最好的情况下,树完成平衡,每个节点有两个孩子。
因为它听起来像是家庭作业,所以我会留在那里。
答案 4 :(得分:1)
如果一个根可以有任意数量的叶子,最多2(0,1,2),那么:
为了获得最小高度,每个根必须具有尽可能多的分支。在这种情况下,您会注意到n = 1,height = 0;对于n = 2到n = 3,高度= 1;对于n = 4到n = 7,高度= 2;对于n = 8到n = 15,高度= 3等。
你可以注意到,对于每一个n,都存在一个p:
2 ^ p&lt; = n&lt; 2 ^(p + 1)和p =高度,所以height = [log2(n)]
答案 5 :(得分:0)
最大高度为n,最小高度(IE为完美二叉树)为(log base 2(n + 1)) - 1
答案 6 :(得分:0)
最小高度为h = ceiling(log(n + 1)/ log(2)-1) 对于任何二叉树。
答案 7 :(得分:-1)
使用n-nodes
,可能的最大高度为floor(log(n))
= ceil (log(n+1))-1
。
使用n-nodes
,可能的最小高度为n-1
。