为什么LR不能直接进行右旋转?

来源:1-6 LR 和 RL

warren_au

2020-11-01 20:27:28

http://img.mukewang.com/climg/5f9ea7f209e70d2c05040267.jpg

第一个问题:难道不能直接把8的左子树先记录下来,然后旋转变成

8

  \

   12

   /

10

这样吗?这个不是跟上节课的右旋转定义一样吗?

​    Node x = y.left;
    Node T3 = x.right;
  
    x.right = y;
    y.left = T3;

第二个问题:在那个复杂的LR中

8那个节点高度为2所以应高调整,但8的平衡点不小于0根据

getBalanceFactor(node.left) < 0
getBalanceFactor(node.left) >= 0
应该直接使用右旋转吗?这样理解正确吗
旋转完
12
/ \
5 18
/ \ / \
3 8 17
\ / \
4 7 11
这样的结果是正确的吗?

写回答

1回答

liuyubobobo

2020-11-03

这页 ppt 有问题,我举的例子不正确。抱歉!


在这页 ppt 的例子中,节点 5 是平衡的;节点 8 是不平衡的,但其实是 LL,所以只需要右旋转就好。


在下面,我给出了一个正确的 LR 的例子。在这个例子中,节点 11 是不平衡的,且属于 LR。


http://img.mukewang.com/climg/5fa0f361095e7bd605000281.jpg


再次抱歉!


继续加油!:)

0
hiuyubobobo
回复
harren_au
h 对对对,数字有问题,看形状:)
h020-11-04
共2条回复

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2636 学习 · 1090 问题

查看课程