【问题标题】:Number of nodes of a tree where each node has two children nodes树的节点数,其中每个节点有两个子节点
【发布时间】:2015-04-27 02:06:33
【问题描述】:

我有一棵树,其形式如下:

在第一张图片上,树的高度为 1,总共有 3 个节点。下一个 7 分 2 分,最后一个 15 分 3 分。如何确定这种l 高度形式的树将有多少个节点?还有,那是什么树(有什么特别的名字吗?)?

【问题讨论】:

  • 是完整的二叉树吗?
  • 它既是完整的二叉树又是完整的二叉树......这使它成为完美的二叉树(请参阅我的回答中的维基百科链接)

标签: data-structures tree


【解决方案1】:

那是perfect binary tree

考虑到这种递归方法,您可以获得节点数:

n(0) = 1
n(l+1) = n(l) + 2^l

所以

n(l) = 2^(l+1) - 1

【讨论】:

    【解决方案2】:

    深度为“d”的完全二叉树是严格的二叉树,其中所有的叶子都在 d 层。

    • 对于 fig1,d=1
    • 对于 fig2,d=2
    • 对于 fig3,d=3

    因此,假设二叉树 T 的深度为 d。那么T中最多

    2<sup>(d+1)</sup>-1

    个节点n可以存在。

    • 对于图 1,d=1; 2<sup>(1+1)</sup>-1=2<sup>(2)</sup>-1=4-1=3
    • 对于图 2,d=2; 2<sup>(2+1)</sup>-1=2<sup>(3)</sup>-1=8-1=7
    • 对于图 3 d=3; 2<sup>(3+1)</sup>-1=2<sup>(4)</sup>-1=16-1=15

    树的高度(h)和深度(d)一棵树(从树的最长路径的长度根到叶节点)在数值上相等。

    这是一个answer,详细说明了如何计算深度和高度。

    【讨论】:

    • 注意:否决票是由于发布了错误的方程式(混合了上标的 html 标签)。错误已更正。
    【解决方案3】:

    一棵完整树的节点数是……

    n = 2^(h+1) - 1.

    【讨论】:

      【解决方案4】:

      您所描述的内容听起来像是“完美的二叉树”。 “二叉树是一种树数据结构,其中每个节点最多有两个孩子” http://en.wikipedia.org/wiki/Binary_tree 完美树是“所有叶节点都在相同深度的二叉树”。 http://xlinux.nist.gov/dads//HTML/perfectBinaryTree.html

      完美二叉树中节点的最大数量 =2^(身高+1)-1

      节点数到最小高度 =CEILING(LOG(nodes+1,2)-1,1)

      可以在前面引用的 Wikipedia wiki 中找到与二叉树相关的定义。

      【讨论】:

        【解决方案5】:

        这个也可以这样理解。

        如果是完美二叉树 叶节点总数为2^H(H = 树的高度)

        内部节点总数为2^H - 1

        因此,节点的总数将是 2^H + 2^H - 1,也就是其他人提到的 2^(H+1) - 1

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-29
          • 2011-02-03
          相关资源
          最近更新 更多