具有n个叶节点的二叉树的最小/最大深度是多少?

时间:2019-01-12 03:47:20

标签: data-structures binary-tree

我知道具有n节点的二叉树的最大深度为n-1

我知道具有n节点的二叉树的最大深度为floor(log2n)

但是如果只给我叶子节点的数量怎么办?

1 个答案:

答案 0 :(得分: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)

除非对最深的树有更严格的约束,例如“每个内部节点必须有两个同级(或类似的东西)”