对于一颗二叉查找树进行增/删/改查,所花费的时间与高度h成比例,并不是与树的容量N成比例。如果让树维持矮矮胖胖的好身材, 也就是让h维持在O(lg n)左右, 完成上述工作就很省时间。能够一直维持好身材, 不因新增删除而长歪的搜寻树叫做平衡树
AVL树:
定义: 是二叉查询树和堆合并构成的数据结构,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵AVL树。
AVL树不平衡的情况:
只有那些在被插入/删除结点到根节点的路径上的结点有可能出现失衡, 因为只有那些结点的子树结构发生了变化。
当插入新结点导致不平衡时, 我们需要找到距离新节点最近的不平衡结点为轴来转动AVL树来达到平衡。
插入方式 | 描述 | 旋转方式 |