红黑树与AVL树


前言

红黑树与AVL树是数据结构中避不开的话题,也是面试中常问的问题。今天就把他们总结在一起。

一、AVL是什么?

向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。为什么高度差的绝对值不超过1而不是0呢?因为如果高度差的绝对值不超过0,那么二叉树就变成满二叉树了,因此绝对值不能超过1。这就引入了平衡二叉树的概念:

AVL树也是一种自平衡的二叉搜索树,它通过节点的平衡因子(左子树高度减去右子树高度)来保持树的平衡性。AVL树的平衡性维护主要通过旋转操作来实现。

二、AVL的插入与删除

插入

1、插入新节点时,按照二叉搜索树的规则将其插入到合适的位置。

2、自底向上遍历从插入节点到根节点的路径,更新每个节点的平衡因子。
3、如果某个节点的平衡因子超过了1或-1,表示树失去了平衡,需要进行旋转操作来恢复平衡。
a、如果插入节点在失衡节点的左子树的左子树中,进行右旋操作。
b、如果插入节点在失衡节点的右子树的右子树中,进行左旋操作。
c、如果插入节点在失衡节点的左子树的右子树中,先对失衡节点的左子树进行左旋操作,再对失衡节点进行右旋操作。
d、如果插入节点在失衡节点的右子树的左子树中,先对失衡节点的右子树进行右旋操作,再对失衡节点进行左旋操作。
重复步骤2和步骤3,直到达到根节点。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值