AVL Tree
AVL Tree - Visualization
定义
AVL树(以发明者Adelson-Velsky和Landis的名字命名)是一种自平衡二叉搜索树。在AVL树中,任何节点的两个子树高度差最多为一;如果在任何时候高度差超过一,就会进行重新平衡以恢复这一特性。 查找、插入和删除操作在平均情况和最坏情况下的时间复杂度都是O(log n),其中n是操作前树中节点的数量。插入和删除可能需要通过一次或多次树旋转来重新平衡树。
AVL Tree 为了维护节点平衡性,需要进行4种旋转操作
- 1.由于该节点左孩子的左子树增加导致的不平衡,需要进行一次右旋转 (rightRotate)
Common function for rightRotate
2.由于该节点右孩子的右子树增加导致的不平衡,需要进行一次左旋转 (leftRotate)
Common function for leftRotate
- 3.由于该节点左孩子的右子树增加导致的不平衡,需要进行一次左旋和一次右旋 (LR)
- 4.由于该节点右孩子的左子树增加导致的不平衡,需要进行一次右旋和一次左旋 (RL)