权重平衡树是二叉树,其中对于每个节点,no。左子树中的节点数至少为一半,最多为两次。右子树中的节点数。那么如何形成一个递归来寻找这个权重平衡二叉树的高度呢?
答案 0 :(得分:0)
只有完整的二叉树可以进行权重平衡。设H(n)
为具有n
内部节点的权重平衡二叉树的最大高度(因此,2*n+1
个节点)。基本情况
H(0) = 0
很明显。复发
floor((4*n/3-1)/2)
H(n) = 1 + max max(H(l), H(n-1-l)) for all n > 0
l=ceiling((2*n/3-1)/2)
从高度的重现和以下事实得出结论:给定n-1
内部节点不是根,我们必须在左(l
)和右({{1}之间分配它们})子树,符合权重平衡标准。 (有n-1-l
个内部和外部节点要分发;最不平衡的分割可能是三分之一/三分之二;一个完整的二叉树,2*n
个节点有k
个内部节点。)
让我们猜想(k-1)/2
不会减少并写下新的重现
H(n)
新复发的重点在于,如果它实际上是非减少的,那么H'(0) = 0
H'(n) = 1 + H'(floor(2*n/3-1/2)) for all n > 0.
,通过强大的感应证明,其中涉及简化其他重现中的最大值。事实上,我们可以通过归纳证明而不解决H(n) = H'(n)
它实际上是非减少的,所以这种简化很好。
至于解决H'(n)
,我会挥手告诉你Akra--Bazzi适用(或者,主定理案例2,如果你想快速和松散地使用{{} 1}}),产生渐近边界H'(n)
。