AVL树的调整方法

AVL树的调整方法
AVL树的特性
他的左子树的节点数据小于根节点的数据,根节点的数据小于右子树节点的数据
他的左右子树的高度差的绝对值小于1
AVL树节点的定义:

typedefstructTreeNode{
int data;
int height;
structTreeNode*lchild;
structTreeNode*rchild;
}TreeNode;
下面来讲调整方法,顺时针旋转为左,逆时针旋转为右
ll也就是我们说的左左调整
总的来说:就是根成为他左孩子的右孩子,因为根节点一定大于他的左孩子,只能把他调为左孩子的右孩子,左孩子变为根节点,这样才可以符合AVL树的特点,左右子树的高度差小于1,在调整后一定一定不要忘了调整节点的高度,不然在判断的时候会引起连锁反应导致真没也无法调平
调整思路:将根节点的左孩子也就是现在的3当成新的根,把原来的根也就是7,因为他肯定大于他原来的左孩子3,所以他一定会变成现在的根3的右孩子,而原来3的右孩子4一定小于原来的根7,所以就放到7的左边成为他的左孩子,切记原有的二叉树己经改变,需要更新新的节点的高度
rr调整也就是我们说的右右调整
调整思路:和刚才思路差不多就不过多解释了,原来根节点的右孩子10成为现在的根节点,10的左孩子9大于4变为4的右孩子切记一定要及时更新调整节点的高度,不然会影响后续的调整!
lr调整
rl调整也和lr也一样,先对根节点的右子树进行l调整在对根节点进行r调整切记一定要及时更新调整节点的高度,不然会影响后续的调整!rl调整和lr调整一样就是变为先ll在rr了
简便的记忆插入右导致其变的失去平衡就要lr反正rl前提得是两次调整

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值