【问题标题】:What is min/max depth of a binary tree with n leaf nodes?具有 n 个叶节点的二叉树的最小/最大深度是多少?
【发布时间】:2023-03-14 21:26:01
【问题描述】:

我知道带有nnodes的二叉树的最大深度是n-1

我知道带有nnodes的二叉树的最大深度是floor(log2n)

但是如果我只知道叶节点的数量呢?

【问题讨论】:

    标签: data-structures binary-tree


    【解决方案1】:

    二叉树有两个理想。

    理想的“最深”树。

     *
      *
       *
        *
         a 
    

    这棵树显然包含一个叶子节点,并且可能有无限数量的中间节点。这意味着一个叶节点的最大深度是无限的(除非您的问题需要具有多个子节点的内部节点)

    理想的“最浅”树

              *
          *       *
        *   *   *   *
       a a a a a a a a
    

    这棵树显然包含2^(depth-1) 叶子(对于深度为 1 或更大的树),并且通过数学的魔力将具有log(base2)(leaves) = depth-11+log(base2)(leaves) 的深度。由于我们不能有分数深度,所以它必须与ceil(1+log(base2)(leaves)) 对齐

    为了测试这个,让我们建立一个表

    leaves formula                        depth
      1    ceil(1+log(base2)(1)) => ceil(1+0) => ceil(1) => 1
      2    ceil(1+log(base2)(2)) => ceil(1+1) => ceil(2) => 2
      3    ceil(1+log(base2)(3)) => ceil(1+1.58) => ceil(2.58) => 3
      4    ceil(1+log(base2)(4)) => ceil(1+2) => ceil(3) => 3
      5    ceil(1+log(base2)(5)) => ceil(1+2.32) => ceil(3.32) => 4
    

    等等。

    因此,具有 n 个节点(其中 n > 0)的树的深度范围是

    [ceil(1+log(base2)(n)), infinity)
    

    除非对最深的树有更强的约束,例如“每个内部节点必须有两个兄弟姐妹(或类似的东西)”

    【讨论】:

    • 感谢您深思熟虑的回复。它真的帮助我解开了我脑海中的一些电线。
    • @AlanSTACK 很高兴我能帮上忙。整个过程都在那里,因此您可以利用该过程来解决未来的相关问题。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2016-01-24
    • 2015-01-05
    • 2021-11-22
    • 2016-08-27
    • 1970-01-01
    • 2021-02-19
    • 2015-02-12
    相关资源
    最近更新 更多