游凡/AVL树https://gitee.com/you-fan-a/avl-tree
一、什么是AVL树?
一棵搜索二叉树的节点的左右子树高度差不超过一,这样的搜索二叉树就是AVL树。
二、AVL树的节点
在普通的二叉树节点的基础上,添加:parent指针(指向父亲节点)、_bf(平衡因子)。
*平衡因子(0,1,-1为平衡值)
一个节点的右子树高度-左子树高度的结果就是平衡因子值。
平衡因子的绝对值大于二,代表这棵树不平衡,需要优化。
三、优化操作
多说无用,看图。
1、右旋转(右单旋)
适用于最左边失衡
2、 左旋转(左单旋)
适用于最右边失衡
3、左右旋转(左右双旋)
适用于偏左失衡
55左边失衡,会让60为1。55右边失衡,会让50为-1。
4、右左旋转(右左双旋)
适用于偏右失衡
65左边失衡,会使70为1。65右边失衡,会使60为-1。
标签:失衡,树速览,AVL,因子,源码,二叉树,平衡,节点 From: https://blog.csdn.net/2401_83733103/article/details/142768326