【发布时间】:2023-03-14 21:26:01
【问题描述】:
我知道带有nnodes的二叉树的最大深度是n-1
我知道带有nnodes的二叉树的最大深度是floor(log2n)
但是如果我只知道叶节点的数量呢?
【问题讨论】:
标签: data-structures binary-tree
我知道带有nnodes的二叉树的最大深度是n-1
我知道带有nnodes的二叉树的最大深度是floor(log2n)
但是如果我只知道叶节点的数量呢?
【问题讨论】:
标签: data-structures binary-tree
二叉树有两个理想。
理想的“最深”树。
*
*
*
*
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)
除非对最深的树有更强的约束,例如“每个内部节点必须有两个兄弟姐妹(或类似的东西)”
【讨论】: