有序表-AVL树

AVL 树基本介绍

具有最严苛的平衡性。任何一个节点,其左树与右树的高度差不超过 1,即小于 2 。
AVL 在加入和删除节点时与搜索二叉树相同,但在节点操作之后要进行相应的平衡操作。
搜索二叉树如何删除节点?找到待删除节点的右子树的最左节点(左树上的最右节点也行)来替换这个节点。

基本术语

平衡因子(平衡度):即左子树的高度减去右子树的高度。

AVL 树的平衡性破坏原因

Pasted image 20221227091402.png

LL 型

即左子树的左子树过长导致高度差过大。只做一次右旋即可;

LR 型

左子树的右子树过长导致平衡性破坏。想办法让这个右子树(孙子)来到头节点的位置。先以左子树为头进行左旋,再对旋转上来的右子树(原来的孙子,现在成了儿子)为头进行右旋;

RR 型

同理,做一次左旋即可;

RL 型

同理。想办法让这个左子树(孙子)来到头节点的位置。先以右子树为头进行左旋,再对旋转上来的左子树(原来的孙子,现在成了儿子)为头进行左旋;

LL+LR 型

怎么理解?看例子。按照 LL 型进行调整,默认其为 LL 型;
实例:
Pasted image 20221227091637.png
LL 型和 LR 型:
Pasted image 20221227092322.png
Pasted image 20221227093206.png

AVL 树加入删除操作后如何检查平衡性: