平衡二叉树

平衡二叉树(AVL树)解决了二叉排序树深度不确定的问题。

问题背景

对于形如左偏树的二叉排序树,查找会退化到顺序查找。平衡二叉树通过保持树的平衡性来解决这个问题。

定义

平衡二叉树是一棵二叉排序树,其左右子树都是 AVL 树,且左子树与右子树的高度差绝对值不超过 1。对于每个结点,左右子树的高度差都不超过 1,查找等操作均可做到 O(log n)。

平衡化处理

在插入过程中,由于平衡化处理,有可能会抵消掉高度增加。在删除操作中,也会进行多次平衡化处理。

旋转类型(相对于度 2 结点):

  • LL:插入到度 2 结点的左子树的左子树
  • RR:插入到度 2 结点的右子树的右子树
  • LR:插入到度 2 结点的左子树的右子树
  • RL:插入到度 2 结点的右子树的左子树

大部分操作与二叉排序树相同,但会多一个平衡化处理操作(插入或删除后检测是否平衡并做对应处理)。

链接到