数据结构之红黑树(还在为看不懂红黑树而烦恼吗?别再翻了,此篇足矣~)

红黑树是一种自平衡二叉搜索树,它保证了任何节点到其叶子节点的路径都包含相同数量的黑色节点。本文详细介绍了红黑树的五大特性、插入和删除节点的操作,包括节点旋转、查找、插入和删除的步骤,帮助读者深入理解这一经典数据结构。建议配合笔和纸,逐步理解并实践。

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

  红黑树,非常经典的数据结构,主要用于一些容器中,比如C++语言中的mapJava语言中的TreeMap(后面会写源码分析博客)。红黑树能保持高效的查找,一般取时间复杂度为O(log2n),由于高效,这个结构也比较复杂,所以很多人(包括我自己)都一直搞不懂红黑树到底是怎么插入删除节点的。此篇博客,博主将图文并茂的一层一层揭开红黑树神秘面纱。

   温 馨 提 示 : \color{red}温馨提示: 要彻底搞懂红黑树,难度还是比较大的,建议先阅读我之前写的两篇博客做铺垫,数据结构之二叉树、AVL树、红黑树、Trie树、B树、B+树、B*树浅析是通识篇,主要介绍了几种树结构的区别,数据结构之二叉搜索树详解(附C++代码实现查找、插入、删除操作)单独介绍二叉搜索树插入、删除操作。(其实红黑树 = 二叉搜索树 + 弱平衡
阅 读 博 客 时 , 建 议 准 备 笔 和 纸 , 手 动 画 一 画 , 并 且 步 步 为 营 , 不 要 跳 着 看 ! \color{red}阅读博客时,建议准备笔和纸,手动画一画,并且步步为营,不要跳着看!

一、红黑树概述

1、什么是红黑树

  红黑树是一棵二叉搜索树,并且这棵树实现了弱平衡(严格的平衡是对于树中任意节点的左右子树高度差不超过1)。弱平衡是指任意节点到到其子树中的叶节点所经过的黑色节点数相同,也可以称为黑色平衡(因为严格平衡的二叉搜索树AVL,维护成本太高,所以退而求其次)。
在这里插入图片描述

2、红黑树的五大特性

  红黑树的五大特性:

1、节点是红色或者是黑色
2、根节点是黑色
3、每个叶节点(NIL或空节点)是黑色
4、每个红色节点的两个子节点都是黑色的
5、任意节点到其子树中的叶节点(NIL节点)所经过的黑色节点数相同(黑高相同)

   注 : \color{red}注: 红黑树引入了NIL节点,用于填充节点的左或右为空的位置,因此红黑树中的叶节点特指NIL节点。
  一说定义,博客的画风瞬间变得枯燥起来了,可能有些小伙伴已经开始有抵触情绪的。这些特征你可以不用记住,后面用到的时候我会反复提出来的。

3、为什么要引入红黑树

  还记不记得在博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值