如果你知道它的节点数,如何找到二叉树的最小高度?

时间:2012-10-14 19:38:57

标签: data-structures tree computer-science binary-tree discrete-mathematics

设n是二叉树的节点数,那么找出二叉树最小高度的通用函数是什么?

我认为它将是n = floor(log2(n))+ 1。但是,我想,我错了。

3 个答案:

答案 0 :(得分:3)

来自Binary Tree Height

  

如果你有N个元素,二叉树的最小高度将是log2(N)+1。

答案 1 :(得分:2)

请记住这个概念

  

要使高度最小,你必须给每个级别,它可以容纳的最大节点数

因此,对于高度为h的树,最多没有树可以容纳的节点总数= 2 ^(h + 1)-1,所以 的 N'LT; = 2 ^(H + 1)-1
解决后你会得到 h> = log(n + 1)base2 -1
现在决定日志的地板或细胞,像这样思考

  

如果我的登录是3.56 ..那么这意味着直到3级每个级别被完全消耗,最后一级没有完全填满。因此,高度的定义表明它是从根到叶子的最长路径,因此在高度上我们也将包括最后一个级别。

因此ceil比地板更受欢迎。通过这种方法,你也可以找到m-ary树。

答案 2 :(得分:1)

尝试通过归纳证明这一点。二叉树的类型是归纳的,有两个构造函数:

  • Leaf(v)
  • Node(Tree,Tree)

现在可以使用结构感应来显示二叉树的最小高度。要获得最小高度,您需要完整的二叉树。这是一个二叉树,对于任何子树,它的子节点都具有相同的高度。 (这基本上意味着如果你画出树,你看不到任何“洞”。)所以假设你有这种类型的树,我们想证明它的高度为floor(log_2(n)) + 1。您可以通过转动并说:我说有一个高度为floor(log_2(n))+1的树来证明这个稍微简单一点,证明它最多只有n个节点。你可以通过对构造函数的结构归纳来证明这一点。