AVL树是一种自平衡的二叉搜索树,具有以下特点:
对于任意节点,它的左右子树的高度差不超过1,即AVL树的高度是O(logn)级别的,比普通二叉搜索树更加平衡。
与普通二叉搜索树相同,左子树中所有节点的键值小于该节点的键值,右子树中所有节点的键值大于该节点的键值。
为了保持AVL树的平衡性,在插入和删除节点时,需要对AVL树进行旋转操作。
AVL树的旋转操作分为左旋和右旋两种:
左旋:将某个节点的右子树变为其父节点,该节点成为其右子树的左子树。
右旋:将某个节点的左子树变为其父节点,该节点成为其左子树的右子树。
对于AVL树中的任意节点,都有以下平衡因子(Balance Factor)的定义:
B F = h e i