首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AVL树四次旋转不起作用

AVL树四次旋转不起作用
EN

Stack Overflow用户
提问于 2016-11-20 08:53:41
回答 1查看 62关注 0票数 0

为了保持二叉树的平衡,我们可以使用RR LL RL LR foure来使不平衡树保持平衡,但是如果我们有一个平衡树作为fllows:

代码语言:javascript
运行
复制
        885
        / \
       /   \
     659   912
     / \     \
    /   \    934
  212   759
  / \
 /   \
11   344

如果我们向这棵树添加一个节点(168),并且树如下所示:

代码语言:javascript
运行
复制
        885
        / \
       /   \
     659   912
     / \     \
    /   \    934
  212   759
  / \
 /   \
11   344
 \
 168

树不是平衡的,但是我不能使用四个旋转(RR,LL,RL,LR)中的任何一个来再次实现树的平衡。有人告诉我为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 09:35:32

树的左边很重,但是树的左边子树不是很重,你只需要做一个正确的旋转。在正确旋转之后,树将如下所示:

代码语言:javascript
运行
复制
                 659
                /   \
               /     \
             212      885
             / \      /  \
            /   \    /    \
           11   344  759   912
             \               \
              \               \
               168             934

尝试使用以下算法来决定执行哪种方法:

代码语言:javascript
运行
复制
IF tree is right heavy {
 IF tree's right subtree is left heavy {
   Perform Double Left rotation
 }
 ELSE{
   Perform Single Left rotation
 }
}
ELSE IF tree is left heavy {
 IF tree's left subtree is right heavy {
   Perform Double Right rotation
 }
 ELSE {
   Perform Single Right rotation
 } 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40702253

复制
相关文章

相似问题

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