如何形成重量平衡二叉树的高度?

时间:2016-01-10 15:44:36

标签: algorithm tree

权重平衡树是二叉树,其中对于每个节点,no。左子树中的节点数至少为一半,最多为两次。右子树中的节点数。那么如何形成一个递归来寻找这个权重平衡二叉树的高度呢?

1 个答案:

答案 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)