平衡二叉树的左旋右旋详解 看不懂你打我

左旋右旋的操作

1.左旋:对X节点左旋,即以X的右孩子Y为轴将X节点转下来,变为Y的左孩子,
简单记为左旋即把该节点变为左孩子

例题1.如对A左旋
在这里插入图片描述

注意2个问题:
1.既然要左旋要以右孩子为轴,那么右孩子是必须存在的,即不能为空。
2.左旋后B的左指针指向A,那原来B的左孩子C怎么办,谁去指向它? 
A原来的右指针指向B,在左旋后该怎么办,它指向谁?
所以我们将左旋后A的右指针指向B原来的左孩子C即可。

习题:请画出对B左旋后的结果。

2.右旋:对X节点右旋,即以X的左孩子Y为轴将X节点转下来,变为Y的右孩子,
简单记为右旋即把该节点变为右孩子

在详细讲解完左旋后,请对例题1的B右旋,并思考在右旋前A的右指针是指向B的,右旋后应该是指向谁呢?(耐心点,慢慢来比较快)

为什么要左旋右旋

为了减小树的高度

左旋右旋能保持排序二叉排序树的性质吗

可以,以左旋为例,左旋时B、D没有变,只要考虑A、C,我们把A变为B的左节点,满足A<B<D,与旋前一致,我们把C变为A的右孩子,C又在B的左边所以,A<C<B,所以A<C<B<D,与左旋前一致

下次写平衡二叉树的LL、RR、LR、RL。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值