在树结构中,有一颗平衡的树是可以提高搜索效率的,但是当数据插入进去的时候,使得原来的平衡二叉树变得不平衡,此时需要对于二叉树进行一定的调整
调整方式
1、RR旋转
麻烦结点处于发现结点 的 右子树 的 右子树;
把 B 直接提上来,连接 A 把 Bl 放在 A 的右子树上(因为需要满足搜索树,Bl 比 A 是大一些的)
举例
2、LL旋转(左子树的左子树出现了破坏结点,LL旋转)
左边红色圈里面的东西进行左旋转,旋转成为了右边的样子,其他的部分保持不变;
为什么图下面的BR 挂在了 A 的左边呢?
因为是搜索树,必须保证左边小,左边大的原则
3、LR 旋转
4、RL 旋转
小结:
-
判断上面的是什么旋转?
看插入的结点和破坏结点之间的位置关系; -
有时候的元素插入进去之后,虽然整棵树的结构是不需要动的,但是实际上面的平衡因子是需要进行改变的;