红黑树与AVL树


前言

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

一、AVL是什么?

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

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

二、AVL的插入与删除

插入

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
红黑树AVL树都是自平衡的二叉搜索树,但它们在平衡策略和性能上有一些区别。 区别: 1. 平衡策略:AVL树通过限制左右子树的高度差来保持平衡,而红黑树通过引入红黑节点规则来实现平衡。 2. 平衡性:AVL树是严格平衡的,任意节点的左右子树高度差不超过1;而红黑树是近似平衡的,它通过一些额外的规则保持了整体的平衡性,但不保证严格的高度平衡。 3. 插入和删除操作:AVL树在插入和删除操作时可能需要进行更多的旋转操作来维持平衡,因此在频繁插入和删除的场景下,AVL树的性能可能会略低于红黑树。 4. 存储空间:红黑树需要额外的一个位来存储节点颜色信息,相对于AVL树来说,红黑树会占用更少的存储空间。 优缺点: 1. AVL树的优点是在查找操作时更加快速,因为它是严格平衡的,所以其查找时间复杂度为O(log n)。缺点是在插入和删除操作时可能需要进行更多的旋转操作,导致性能稍低,并且需要额外的存储空间来记录平衡因子。 2. 红黑树的优点是在插入和删除操作时相对于AVL树来说更加高效,因为它的平衡性不是严格的。同时,红黑树相对于AVL树来说会占用更少的存储空间。缺点是在查找操作时相对于AVL树来说略慢一些,因为它的平衡性不如AVL树严格。 总结来说,如果对于查找操作的性能要求较高,可以选择AVL树;如果对于插入和删除操作的性能要求较高,可以选择红黑树。同时,红黑树由于其简单性和广泛应用,更常用于实际开发中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值