AVL树 | 伸展树 | |
进行方式 | 每次插入进行旋转,保证每个节点的子树高度相差最多为1(根节点为0) |
每次检索某个节点,进行旋转,保证可能经常需要检索的节点深度不为logN,
平均检索M次的平均时间为MlogN
|
单旋转 |
插入位置和最近不平衡结点成一字型,
对插入位置的父节点进行单旋转
![]() |
插入位置和根节点距离为1
对根节点进行单旋转
![]() |
双旋转 |
插入位置和最近不平衡位置成之字型,
先对插入位置的父节点进行单旋转
在对祖父节点(不平衡结点)进行单旋转
![]() |
插入位置与祖父节点成一字型,进行同向双旋转
第一次旋转,针对插入位置的父节点
第二次旋转,针对插入位置的祖父节点(一次旋转后,当前插入元素的父节点)
![]() 插入位置与祖父节点成一字型,进行反向双旋转
第一次旋转,针对插入位置的父节点
第二次旋转,针对插入位置的祖父节点(一次旋转后,当前插入元素的父节点)
![]() |