【问题标题】:Maximum number of node in a binary tree二叉树的最大节点数
【发布时间】:2014-06-27 05:12:13
【问题描述】:

给定具有L 叶节点的二叉树,该树中的最大节点数是多少?没有树类型的附加信息。

【问题讨论】:

  • 所以我猜这是作业? - 你能解释一下你在说什么“最大”吗?
  • 什么是最大值?最大值?最大数量节点已经存在?或 最大总数可以添加的节点数?
  • @CarstenKönig Maximum ,表示最大的节点数抱歉提出了模棱两可的声明。

标签: data-structures tree binary-tree


【解决方案1】:

如果这是一棵完整的二叉树,则节点总数等于 (2*L - 1)。

【讨论】:

  • 我认为你错了。假设树是 level 1 = [1] , level2= [2,3] , level3=[4,5,6,7] 那么没有。叶节点的数量是 4。现在假设在上面的树中,在 level4=[8] 处只添加了一个节点,那么也没有。叶节点数为 4,但两种情况下最大节点数不同
  • @AyushJain 我认为他的公式是正确的,如果你考虑完整二叉树的定义,那么它就是节点包含两个孩子或没有(零)孩子的树。@mathdan 我的问题是没有关于树的类型。
  • 如果我们绝对不做任何假设,除了每个节点可以有最多两个孩子,那么就没有上限(你可以用任意长的链扩展任何叶子每个节点有一个孩子)。因此,对于有限的答案,必须做出某种限制。 (不同的限制会导致不同的答案。)
【解决方案2】:

对于完整的树(意味着每个节点有 0 或 2 个子节点),解决方案是 @mathdan 所说的 2L-1。但是如果树不是满的,答案实际上是无限的,很容易在一个例子中证明(L=1):

root
  \
  node1
    \
    node2
      \
      ...
        \
        nodeXYZ
          \
          leaf

如果您决定使用具体数量的节点 N,那么您可以轻松地在结构中包含一个额外的节点,从而使您对 N 节点的声明无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多