二叉排序树的查找与树的形态密切相关,当树的形态比较均衡时查找效率最高,当树的形态偏向于某一个方向是时效率迅速降低,当二叉排序树蜕变为单支树,树的深度为n时,其平均查找长度为(n+1)/2(和顺序查找相同)
1. 概述
AVL树是最早提出的自平衡二叉排序树,在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
2、插入时,四种情况可能导致AVL树不再平衡
a、LL:插入一个新节点到节点的左子树(Left)的左子树(Left),可能导致节点左右子树的高度差为2
b、LR:插入一个新节点到节点的左子树(Left)的右子树(Right),可能导致节点左右子树的高度差为2
c、RR:插入一个新节点到节点的右子树(Right)的右子树(Right),可能导致节点左右子树的高度差为-2
d、RL:插入一个新节点到节点的右子树(Right)的左子树(Left),可能导致节点左右子树的高度差为-2
3、删除时
a、当删除节点右子树中的某个节点时,可能导致节点左右子树的高度差为2
b、当删除节点左子树中的某个节点时,可能导致节点左右子树的高度差为-2
4、针对插入和删除引起的不平衡,都可以通过旋转来使之平衡,有四种旋转方式
a、右旋转:节点旋转到节点右孩