提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
调整最小不平衡子树
前言
针对四种最小不平衡子树的情况进行调整操作
此文章进行的所有的操作都是在先找到最小不平衡子树的情况下
找最小不平衡子树可以根据定义来,挺简单的
一、造成不平衡子树的四种情况
解决步骤
1、寻找对应的最小不平衡二叉树
2、判断插入的类型
3、进行对应的旋转
ps:我自己记忆的方法:
1、在谁那里插入导致不平衡,就针对谁进行操作。
单操作类型的(LL、RR):进行的旋转操作与操作类型相反。操作对象是该结点。
如:LL,左孩子的左子树上插入。所以对左孩子进行右旋操作
双操作类型的(LR,RL):需要进行两次操作,进行的旋转操作与类型相同。 操作对象是该结点的对应子树。
如:LR,左孩子的右子树上插入。所以对左孩子的右子树进行操作。
右子树中的根节点先左旋再右旋。
2、谁向哪旋转就移动谁的对应孩子
移动该结点对应的孩子将其变为被操作结点的反对应孩子。
如:C左旋,则C的左孩子变为B的右孩子。(进行补偿)
二、具体解决方法
1.LL、RR单操作
造成当前不平衡的原因是在左孩子的左子树上插入了新的节点。
所以对左孩子进行进行右旋操作。(单操作)
造成当前不平衡的原因是在右孩子的右子树上插入了新的节点。
所以对右孩子进行进行左旋操作。(单操作)
2.LR、RL双操作
总结
我写的可能有点乱,也不一定是适合你的方法,最好的是总结出自己的理解方法,我听的网课的老师讲的方法不是这种,但操作过程一样。我的方法只是抛砖引玉,能帮你理解就行。
参考:https://www.bilibili.com/video/BV1b7411N798?p=52