/** * LL 右单旋 * * y x * / \ / \ * x T4 y 右旋转 z y * / \ ------------> / \ / \ * z T3 T1 T2 T3 T4 * / \ * T1 T2 */
RR型
和LL型对应,就是右子树的右子树导致的节点失衡。
调整方案也很简单,让失衡的节点左单旋。
1 2 3 4 5 6 7 8 9 10 11
/** * RR 左单旋 * * y x * / \ / \ * T1 x y 右旋转 y z * / \ -----------> / \ / \ * T2 z T1 T2 T3 T4 * / \ * T3 T4 */
LR型
是左子树的右子树导致的失衡。
调整方案:
左子树根节点左单旋
失衡节点右单旋
1 2 3 4 5 6 7 8 9 10 11
/** * LR 左单旋 + 右单旋 * * y y z * / \ / \ / \ * x T4 x 左单旋 z T4 y 右单旋 x y * / \ -----------> / \ -----------> / \ / \ * T1 z x T3 T1 T2 T3 T4 * / \ / \ * T2 T3 T1 T2 */
RL型
是右子树的左子树导致的失衡。
调整方案:
右子树根节点右单旋
失衡节点左单旋
1 2 3 4 5 6 7 8 9 10 11
/** * RL 右单旋 + 左单旋 * * y y z * / \ / \ / \ * T1 x x 右单旋 T1 z y 左单旋 y x * / \ -----------> / \ -----------> / \ / \ * z T2 T3 x T1 T3 T4 T2 * / \ / \ * T3 T4 T4 T2 */