关于AVL树的自平衡

AVL树自平衡的四种状况

本文主要介绍AVL树的四种旋转情况,在阅读本文章前,请自行学习AVL树的不平衡状态,也就是如何去找到不平衡的结点(离新插入结点最近的不平衡结点)

1. 左左

AVL树的左左情况指的是新插入结点 在不平衡结点(Root)的左子结点(LeftNode),并且还是在该左子节点(LeftNode)的左边。
这种情况需要右旋转。
插入前状态:

插入结点16,可知,16就是17的左子结点:在这里插入图片描述

但此时不满足平衡条件(结点18不满足),需要右旋
在这里插入图片描述
右旋是指,以不平衡结点为支点(Root),把Root的左孩子结点放在Root结点上,Root结点为LeftNode的右孩子。

2.右右

AVL树的左左情况指的是新插入结点不平衡结点(Root)的右子结点(RightNode),并且还是在该右子节点(RightNode)的右边。
这种情况需要左旋。
旋转前结点如下:
在这里插入图片描述
插入27结点时,在这里插入图片描述
此时25结点不满足平衡特性,需要左旋。
在这里插入图片描述

左右

当插入一个结点,根据结点往上找,有个结点(Root)不满足平衡要求,并且这个新插入的结点在这个结点(Root)的左孩子的右孩子,这时就要进行双旋转先左旋,再右旋。
在这里插入图片描述
首先25和28符合(右右情况)左旋,变为
在这里插入图片描述
再进行右旋,因为这是符合左左情况的,最后结果变为在这里插入图片描述

右左

当插入一个结点为不平衡结点的右左结点时,也是双旋转。在这里插入图片描述
首先60和57先右旋,在这里插入图片描述
这时候再左旋(以50为旋转轴)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值