AVL树,是带有平衡条件(balance condition) 的二叉查询树。其平衡条件是每个节点的左子树和右子树的高度最多差1的二叉查询树(空树的高度定位-1)。树的高度是指,该树到一片叶子节点的最长路径的长。
当对AVL树进行插入,或者删除操作时,由于可能会破坏AVL树的平衡条件,为了能够在插入或删除操作完成后,继续保证AVL树的平衡,需要对AVL树进行旋转(retation)。通常就是包括单旋转和双旋转两种情况。
单旋转节点的左儿子节点,左子树添加新的节点的场景。示例,如图:
节点的右儿子,右子树添加新的节点的场景,示例,如图:
双旋转节点的左儿子,右子树添加节点的场景,示例如图:
节点的右儿子,左子树添加节点的场景,示例如图: