今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 TreeMap 存储结构的基石。
文章相关视频讲解:
5种红黑树的场景,从Linux内核谈到Nginx源码,听完醍醐灌顶
二叉搜索树
二叉搜索树又叫二叉查找树、二叉排序树,我们先看一下典型的二叉搜索树,这样的二叉树有何规则特点呢?
二叉搜索树有如下几个特点:
- 节点的左子树小于节点本身
- 节点的右子树大于节点本身
- 左右子树同样为二叉搜索树
下图就是一棵典型的二叉搜索树:

二叉搜索树是均衡二叉树的基础,我们看一下它的搜索步骤如何。我们要从二叉树中找到值为 58 的节点。
第一步:首先查找到根节点,值为 60 的节点。

第二步:比较我们要找的值 58 与该节点的大小。
如果等于,那么恭喜,已经找到;如果小于,继续找左子树;如果大于,那么找右子树。
很明显 58<60,因此我们找到左子树的节点 56,此时我们已经定位到了节点 56。

第三步:按照第二步的规则继续找。
58>56 我们需要继续找右子树,定位到了右子树节点 58,恭喜,此时我们已经找到了。

我们经过三步就已经找到了,其实就是我们平时所说的二分查找,这种二叉搜索树好像查找效率很高,但同样它也有缺陷,如下面这样的二叉搜索树。

看到这样的二叉搜索树是否很别扭,典型的大长腿瘸子,但它也是二叉搜索树,如果我们要找值为 50 的节点,基本上和单链表查询没多大区别了,性能将大打折扣。
这个时候我们的均衡二叉树就粉墨登场了,均衡二叉树就是在二叉搜索树的基础上添加了自动维持平衡的性质。
上面的大长腿瘸子二叉搜索树经过自动平衡后,可能就成为了下面这样的二叉树。

红黑树是一种非严格均衡的二叉搜索树,它在Linux内核、Nginx等后端开发中有着广泛应用。文章详细介绍了红黑树的六大规则,插入和删除操作,并通过实例展示了如何通过变色和旋转维持平衡。红黑树是实现TreeMap等数据结构的基础,对提升查找效率至关重要。
最低0.47元/天 解锁文章
177万+

被折叠的 条评论
为什么被折叠?



