解析平衡二叉树(AVL树)

平衡二叉树(AVL树)

平衡二叉树,又称AVL树,指的是每一个结点的左右子树的深度差不超过1,它是一种高度平衡的二叉排序树。至于它为什么又叫AVL树,则是取自两个发明平衡二叉树的科学家的名字:G. M. Adelson-Velsky和E. M. Landis。

平衡因子
我们将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF(Balance Factor),所以平衡二叉树每一个结点的平衡因子只能是-1,0,1,只要二叉树上有一个结点的平衡因子的绝对值大于1,则这棵二叉树就不是平衡二叉树。

如何将不平衡的二叉树平衡
主要有四种调整方式:
LL型:在左子树的左孩子上插入元素;(右旋)
RR型:在右子树的右孩子上插入元素;(左旋)
LR型:在左子树的右孩子上插入元素;(先左旋再右旋)
RL型:在右子树的左孩子上插入元素;(先右旋再左旋)

LL型(右旋):
右旋,顾名思义,就是向右旋转一次,下图为最简洁的右旋:
在这里插入图片描述
下面是复杂一点的右旋:
在这里插入图片描述
RR型(左旋):
左旋,顾名思义,就是向左旋转一次,下图为最简洁的左旋:
在这里插入图片描述
下图是复杂一点的左旋:
在这里插入图片描述
LR型(先左旋再右旋),如下图所示:
在这里插入图片描述
RL型(先右旋再左旋),如下图所示:
在这里插入图片描述
图是自己画的,有点不清晰,请谅解~
如有问题欢迎指出~

猜你喜欢

转载自blog.csdn.net/qq_44874062/article/details/107969549
今日推荐