红黑树 LR 、RL、RR、LL 型
在红黑树以及AVL树的插入和删除修复算法中LL、RR、LR、RL是用来描述不平衡的形态的具体指当前节点(N)、父节点(P)和祖父节点(G)这三者之间的相对位置关系。理解这四个类型的关键在于看N是P的哪一侧子节点以及P是G的哪一侧子节点。type祖父(G) 到 父(P) 的方向父(P) 到 当前节点(N) 的方向形状LLLeftLeft一条向左的直线RRRightRight一条向右的直线LRLeftRight先向左再向右 (形)RLRightLeft先向右再向左 (形)LR 型父节点在祖父的左边新节点在父节点的右边。RL 型父节点在祖父的右边新节点在父节点的左边。记忆L R 型从G到N路径是先向L(左) 走到P再向R(右) 走到N。R L 型从G到N路径是先向R(右) 走到P再向L(左) 走到N。修复方式type形状修复方式LL一条向左的直线右旋祖父(G)RR一条向右的直线左旋祖父(G)LR先向左再向右 (形)先左旋父(P)变为LL型再右旋祖父(G)RL先向右再向左 (形)先右旋父(P)变为RR型再左旋祖父(G)总结直线型 (LL / RR) 一次旋转LL(左左) 导致失衡就右旋祖父。RR(右右) 导致失衡就左旋祖父。技巧旋转方向与失衡方向相反。曲线型 (LR / RL) 两次旋转LR(左右)先左旋父节点变成LL再右旋祖父。RL(右左)先右旋父节点变成RR再左旋祖父。技巧先通过一次旋转将曲线“掰直”再用直线型的方法处理。应用场景在红黑树插入中这些类型用于处理“父红叔黑”的情况。在AVL树中这些类型用于处理所有失衡情况。