红黑树分为红和黑有什么好处_数据结构与算法——红黑树

前面我们提到了二叉查找树,支持快速的查找、插入和删除操作。中序遍历二叉查找树,可以输出有序的数据序列,非常高效。

但是,二叉查找树存在一个问题,一般情况下二叉查找树的搜索、插入、删除的复杂度等于树高,时间复杂度为 O(logn),不过在频繁的插入、删除过程中,可能会出现树的高度远大于 logn 的情况,导致各种操作效率急剧下降,最坏的情况下,二叉树会退化为链表,时间复杂度为 O(n)。

由于这个原因,所以出现了很多改进版的平衡二叉树查找树,比如 AVL 树,红黑树等。

工程中,红黑树用的最多,这也是我们为什么以红黑树为代表来介绍。

平衡二叉查找树

平衡二叉查找树是改进版的二叉查找树。一般的二叉查找树的查询复杂度取决于目标节点到树根节点的距离,即深度。因此当目标节点的深度普遍较大的时候,查询的平均复杂度会上升。为了实现更高效率的查询,诞生了平衡二叉查找树。

那么平衡二叉查找树是怎样提高查询效率的呢,平衡二叉查找树规定,树中任意节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O(logn)。例如上面提到的 AVL 树,它就是严格符合上面的这个定义。

但也有一些平衡二叉树并没有严格符合上面的定义(树中任意节点对应的两棵子树的最大高度差为1),比如我们今天要介绍的红黑树,它从根节点到各个叶子节点的最长路径,有可能会比最短路径大一倍。

平衡二叉查找树这种二叉树之所以出现,是为了解决普通二叉查找树在频繁的插入,删除操作时,时间复杂度退化的问题。所以最终能够解决这个问题就好,并不一定要严格符合平衡二叉查找树的定义。所谓“平衡”,简单来说就是让整棵树左右子树比较“平衡”,不要出现相差很大的情况。这样树的高度就能相对小一些,对应的各个操作的效率就会高一些。

红黑树

顾名思义,之所以叫红黑树,是因为它的每个节点都带有一个颜色属性,颜色为红色或黑色。另外还有如下额外的要求:

  1. 根节点是黑色
  2. 节点是
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值