我知道具有n
个节点的二叉树的最大深度为n-1
我知道具有n
个节点的二叉树的最大深度为floor(log2n)
但是如果只给我叶子节点的数量怎么办?
答案 0 :(得分:1)
二叉树有两个理想。
理想的“最深”树。
*
*
*
*
a
这棵树显然包含一个叶节点,并且可以具有无限数量的中间节点。这意味着一个叶子节点的最大深度是无限的(除非您的问题要求内部节点具有多个子节点)
理想的“最浅”树
*
* *
* * * *
a a a a a a a a
这棵树显然包含2^(depth-1)
个叶子(对于深度为1或更大的树),通过数学的魔术,其深度为log(base2)(leaves) = depth-1
或1+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)
除非对最深的树有更严格的约束,例如“每个内部节点必须有两个同级(或类似的东西)”