红黑树概念理解

本文介绍了红黑树的基本概念及其产生的背景,重点讲述了红黑树的特点和建树过程,包括插入节点后的染色规则及调整方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        平衡二叉树以后提出的概念,就叫红黑树。因为平衡二叉排序树插入经常都要 左旋,右旋,影响效率,但又依然需要类似特性,就产生了红黑树。目的:1.破除高度差为1的定义,让它不要那么频繁旋转2.代码实现比较简单些。

红黑树的五个特点(要求):

1.节点是红或黑

2.根必须是黑的

3.空叶子默认是黑的

4.红的孩子必须是黑的。也就默认了从根出发,不存在连续的红色结点。

5.从根出发到所有空叶子结点(包含空叶子结点)的所有路径,黑色结点数量相等。

 如图,也就意味着最长的路径超不过2倍最短,这样一来时间复杂度也是o(logn)。

建树:以先插入,再染色为原则

情况一:插入位置是根,直接染黑。如果不在根上,那就必有父亲,往下看。

情况二:父亲是黑,也是直接插入,无需操作。

情况三:父亲是红,叔叔也是红。把爷G染成红,把父和叔(P、U)染成黑。这个图里u下面应该有方框,代表空叶子结点。

情况四:父亲是红,叔叔是黑。这是最复杂的情况,如下图。

其实情况四还要分为四种情况,取决于n是否在p,g中。

四种情况分别对应:G右旋,G左旋,P左旋G右旋,P右旋G左旋。就和平衡二叉树的插入差不多了。

 手撕代码以后再写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值