红黑树的插入与删除(一)

本文介绍了红黑树的基本概念,强调了红黑树在插入操作中的优势,即通过较少的调节操作维持平衡。文章详细阐述了红黑树的五个性质,并解释了两种平衡调节操作:节点变色和子树旋转。在节点插入部分,讨论了四种不同情况,包括根节点插入、父节点为黑、父节点为红且叔节点为红、父节点为红但叔节点为黑的情况,说明了旋转和颜色调整策略,确保红黑树的性质得以保持。

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

红黑树定义

红黑树作为同样提供O(log n)查询的树结构(其实准确点说不是log n,红黑树虽然是平衡树,但是没有AVL树那么平衡),通常用于关联数组的使用中,相对于AVL树,在插入和删除操作中能够以更少的调节操作来位置平衡,AVL树的平衡唯一参考标准就是其高度,在插入和删除节点时需要检查调整在搜索路径上造成的“影响”,可能需要多个调整步骤来维持树的平衡。

红黑树的节点具有一个颜色属性,平衡是根据其定义的五个特性来维持的:

1.节点颜色为红或者为黑

2.根节点为黑

3.叶子节点为黑(叶子作为结束标志,可以以空表示或者自定义实体节点作为结束标志,后面树中没有画出来)

4.红色节点必须有两个黑色子节点(子节点可以为结束标志)

5.任一节点出发到叶节点路径上包含相同数量的黑色节点

提前预告:最重要的就是特性4,5,因为后续的插入节点操作主要依靠特性4来调整平衡,删除节点操作主要依靠特性5来调整平衡。整个后面的操作都是依赖这5条要求,所以一定要记熟了(下面会反复提,帮助记忆)。

调整概念

由这5个特性要求可以看出,红黑树的平衡调节操作有两种类型:

1.节点变色

2.子树旋转

相对于AVL树,调节操作较少,能够提供良好的统计性能(插入最多旋转两次,删除最多旋转三次,节点变色不提)。因为保证的是更大范围上的平衡(颜色+高度),AVL树的平衡(高度),所以需要考虑的情况就相对比较多,不只是AVL树中的左旋,右旋。

(1) 关于颜色要求,之前特性4说过,红不能与红相邻,意思就是红色节点父节点只能为黑,子节点只能为黑。也就是说红黑树中存在节点为红时,则父节点必存在且为黑,子节点若存在则必为黑,不存在也可,因为叶子节点也是黑色。

(2) 关于高度要求,能够保证一条路径上的高度不能超过另一条路径高度的两倍。两倍的情况:一个为纯黑路线,一个为黑红交替路线,有图有真相:


左边属于纯黑路线,两个节点,右边属于黑红交替路线,四个节点,叶子节点不计算在内。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值