首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何形成递归以求权重平衡二叉树的高度?

如何形成递归以求权重平衡二叉树的高度?
EN

Stack Overflow用户
提问于 2016-01-10 15:44:35
回答 1查看 349关注 0票数 0

权重平衡树是一种二叉树,在二叉树中,每个节点的编号。左边子树中的节点至少有一半,最多是no的两倍。右边子树中的节点。那么,如何寻找这种重量平衡的二叉树的高度,如何形成一个递归的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-10 16:15:11

只有完整的二叉树才能平衡权重。设H(n)是具有精确n内部节点(所以,2*n+1节点)的权重平衡二叉树的最大高度。基本情况

代码语言:javascript
运行
复制
H(0) = 0

很明显。复发

代码语言:javascript
运行
复制
             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)和右(n-1-l)子树之间,但要遵守权重平衡准则。(需要分发2*n内部和外部节点;最不平衡的拆分可能是三分之一/三分之二;带有k节点的完整二叉树具有(k-1)/2内部节点。)

让我们假设H(n)是不减的,并写出一个新的递推

代码语言:javascript
运行
复制
H'(0) = 0
H'(n) = 1 + H'(floor(2*n/3-1/2))     for all n > 0.

新递归的要点是,如果它实际上是不减的,那么H(n) = H'(n),通过一个强的归纳法证明,其中包括简化另一个递归中的最大值。事实上,我们可以在不求解H'(n)的情况下通过归纳法证明它实际上是不减的,所以这个简化是很好的。

至于求解H'(n),我会挥手告诉你们,阿克拉-巴兹适用(或者,主定理案例2,如果您想快速和松散地玩floor),得到渐近界的H'(n) = Theta(log n)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34707367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档