Cpp || AVL树旋转分析

在这里插入图片描述
对了,这就是平衡

AVL树旋转分析
  • 特点:
  • AVL树:二叉搜索树,每个结点的平衡因子的绝对值都小于2
AVL树平衡因子的计算方法

平衡因子:右子树的高度减去左子树的高度

  • 由平衡因子的计算方法可知平衡因子值为正数,则表示该结点的右子树比左子树高
  • 相反若平衡因子的值为负,则表示该结点的左子树比右子树高
1.左单旋:
  • 特点:右边的右边高

  • 由平衡因子的计算过程可知当结点subR和parent值都为正值的时候,就是右边的右边高,所以进行左单旋来保持AVL树的平衡

  • 旋转条件:parent->_bf == 2 && cur->_bf== 1

  • 旋转过程图示
    在这里插入图片描述

  • 旋转过程的代码(并未整个的完成后续工作)

subR->_left=parent;
parent->_right=subRL;
2.右单旋
  • 特点:左边的左边高

  • 由平衡因子的计算方式可知当结点subL和parent值都为负值的时候,就是左边的左边高,所以进行右单旋来保持AVL树的平衡

  • 旋转条件:parent->_bf==-2,cur->_bf==-1

  • 旋转图示

在这里插入图片描述

subL->right=parent;
parent->_left=subLR;
3.左右双旋
  • 特征:左边的右边高

  • 旋转条件:parent->_bf==-2 && cur->_bf==1

  • 插入后subLR结点的平衡因子的值对调整后parent与subL平衡因子的影响
    在这里插入图片描述

4.右左旋
  • 特征:右边的左边高
  • 旋转条件:parent->_bf == 2 && cur->_bf == -1
  • 插入后subRL结点的平衡因子的值对调整后parent与subR平衡因子的影响
    在这里插入图片描述

上述过程就是平衡二叉树的旋转分析,自己总结的比较简单.希望可以帮助到你。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值