二叉树高度

时间:2009-12-23 06:53:34

标签: binary-tree

我需要一个通用公式来计算二叉树的最小高度和二叉树的最大高度。 (不是二叉搜索树)

8 个答案:

答案 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 。当您的树只有一片叶子时就是这种情况。没有节点有多个分支。
  • 最小高度为 [log2(n)] ,其中[x]是x的整数部分。

为了获得最小高度,每个根必须具有尽可能多的分支。在这种情况下,您会注意到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