左旋:某节点左旋操作为该节点连同其左子树和右子树的连接线下滑到子节点的左子树,子节点原来的左子节点变为下滑的节点的右子节点
右旋:某节点右旋操作为该节点连同其右子树和左子树的连接线下滑到子节点的右子树,子节点原来的右子节点变为下滑的节点的左子节点
1.LL(右旋)
最后插入导致不平衡的节点的父节点为出问题的节点,该节点为其祖父节点的左子节点的左子节点
操作方法是:
祖父右旋,祖父节点下滑变为父节点的右子节点,父节点原来的右子节点变为下滑的祖父节点的左子节点
2.RR(左旋)
最后插入导致不平衡的节点的父节点为出问题的节点,该节点为其祖父节点的右子节点的右子节点
操作方法是:
祖父左旋,祖父节点下滑变为父节点的左子节点,父节点原来的左子节点变为下滑的祖父节点的右子节点
3.RL(先右旋,再左旋)
最后插入导致不平衡的节点的父节点为出问题的节点,该节点为其祖父节点的右子节点的左子节点
操作方法是:
父节点右旋,父节点下滑为出问题节点的右子节点,问题节点代替父节点原位置,此时树变为RR型
祖父节点左旋,下滑变为父节点的左子节点,父节点原来的左子节点变为下滑的祖父节点的右子节点
4.LR(先左旋,再右旋)
最后插入导致不平衡的节点的父节点为出问题的节点,该节点为其祖父节点的左子节点的右子节点
操作方法是:
父节点左旋,父节点下滑为出问题节点的左子节点,问题节点代替父节点原位置此时树变为LL型
祖父节点右旋,下滑变为父节点的右子节点,父节点原来的右子节点变为下滑的祖父节点的左子节点