平衡二叉树(AVL树的定义,旋转详解)

平衡二叉树:或者是一棵空树,或是具有下列性质的二叉树:它的左子树和右子数都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1
结点的平衡因子BF:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只能是-1,0,1.
那如何使二叉排序树变为平衡二叉树呢?通过各种旋转
LL顺时针,RR逆时针,LR:先RR再LL,RL:先LL再RR
什么时候需要单旋转,而什么时候需要多旋转?
单旋转: 插入点不介于 不满足AVL条件的树根 和 树根对应孩子节点之间;
双旋转: 插入点介于 不满足AVL条件的树根 和 树根对应孩子节点之间;
如:

插入点13不在4和7之间,所以只需要一次单旋转就够了
单旋转的轴:单旋转的轴显然是不符合AVL条件的树根的直接孩子;
C1.1)左左单旋转的轴:是不符合AVL条件的树根的左孩子;
C1.2)右右单旋转的轴:是不符合AVL条件的树根的右孩子;
因为47 介于 40 和 50 之间, 所以肯定需要双旋转;
双旋转的轴:相信你也看到了, 双旋转的轴显然是插入点的直接父节点;(除了两个特例)

双旋转的话,把参考链接里的那几幅图看一下就够了
注意这两种情况:

57跑到60那去了(这是相邻的)

53是跟着55的,没有像上一个那样跟着60,这是相对的,注意箭头标出来的

参考链接(https://www.cnblogs.com/cherryljr/p/6669489.html)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值