通过对一棵不平衡的二叉树进行左旋或者右旋,可以将它变成一棵平衡的二叉树
但是在一些特殊情况除外
举个例子
这显然是一棵不平衡的二叉树,要对他进行右旋
第一步
第二步
继续右旋
可以看出,这棵树依然不平衡
看第三步,6 和 7 那两个节点
6 和 7 这两个节点是一个整体,它们俩无论加到 哪里,都会比隔壁多两层,怎么也达不到平衡
这个时候就需要对二叉树进行双旋操作
所以,当变化分支是唯一最深分支的时候,需要先进行反向的旋转
再进行旋转
二叉树的双旋包括 左右双旋 和 右左双旋
当对某个节点进行左单旋时
如果变化分支是唯一的最深分支,那么我们要对新根进行右单旋
然后再进行左单旋
这样的旋转叫做右左双旋
当对某个节点进行右单旋时
如果变化分支是唯一的最深分支,那么我们要对新根进行左单旋
然后再进行右单旋
这样的旋转叫做左右双旋