红黑树-面对大部头咱们使出堵门绝招~庖丁解牛
首先咱们要说一个事情是 红黑树其实就是一种特殊的二叉平衡树。 那咱们奇怪了,二叉平衡树哪里不好呢? 需要引入这么个改进版。 一般改进的东西肯定比不改进的东西牛,那么牛在哪里呢?
回忆一下二叉平衡树的特点是 左节点的值小于 根节点 小于 右节点。那么,如果我们有 1 2 3 4 四个元素,插入二叉平衡树,可能出现下面的情况吗?
这两种情况都可能出现吧。什么?还有左边这种情况?直觉上就觉得不太对吧。
是的,少年,你的直觉是对的。左边这种情况效率就比较低。想想,如果我们要找 1. 左边这种情况找3次 而右边这种情况两次就够了。
所以引出了树里面一个很重要的概念 “平衡”,就是右边这种情况啦。当然,右边也不是绝对平衡,把右边的1 去掉就是平衡。 但是凡事很难尽善尽美嘛。差不多平衡我们也是可以接受的。而红黑树就是追求这种平衡。红黑树的定义比平衡二叉树复杂很多,没办法啊,你多了很多性质啊,规则不复杂点,一般就很难保证嘛。
红黑树的定义有四条:
- 每个节点颜色不是黑色,就是红色
- 根节点是黑色的
- 如果一个节点是红色,那么它的两个子节点就是黑色的(没有连续的红节点)
- 对于每个节点,从该节点到其后代叶节点的简单路径上,均包含相同数目的黑色节点
那么我们简单说明一下,以上图右边的部分来简单解释一下:
3 是根节点 1 4 是叶子节点, 2是1的父节点, 4是1的叔叔节点, 毕竟2和4是兄弟嘛。
这里还要特别注意一下,通常我们初始化一个新节点,我们通常假设该节点是红色。因为这样上面4条性质更容易被满足,换言之,我们可以尽可能少的调整。
简单来说,我们看这个性质1, 不是黑色就是红色,满足。(我们默认红色)
性质二,根节点为黑色(如果没有根节点,我们把加入的这个节点变成 黑色,如果有,不影响)
性质3, 每个节点是红色,两个子节点是黑色。这个由于我们不知道插入在哪里,所以不清楚,疑似不满足
性质4, 每个节点到后代叶子节点的黑色节点数目相同。(满足,我们加的是红色节点啊默认)
今天关于红黑树就简单说到这里。最近改论文改的很累。不过坚持每天过来更新。我个人的习惯就是遇到一个比较难的问题,就一点一点的看。千万不要贪多图快。下一篇博客,咱们接着讨论红黑树的基本操作,即如何保持红黑树平衡特性。 咱们每天学一点点,再难的问题最终都会被我们解决
红黑树-面对大部头咱们使出堵门绝招~庖丁解牛相关推荐
- 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
http://blog.csdn.net/yang_yulei/article/details/26066409 查找(一) 我们使用符号表这个词来描述一张抽象的表格,我们会将信息(值)存储在其中,然 ...
- 红黑树的删除_Python实现红黑树的删除操作
上一篇文章使用Python实现了红黑树的插入操作.参考:Python实现红黑树的插入操作本篇文章使用Python实现红黑树的删除操作.先将红黑树的5条特性列出来:1. 节点是红色或黑色.2. 根节点是 ...
- Python实现红黑树的删除操作
Python实现红黑树的删除操作 本专栏的上一篇文章使用Python实现了红黑树的插入操作.参考:https://blog.csdn.net/weixin_43790276/article/detai ...
- NGINX下的红黑树源码详解(附 流程图和GIF)
之前博主稍微讲解了下红黑树的原理,那么在这篇博客博主想要把红黑树讲的更加的透彻,以便于更多的人了解红黑树 (本博客会更加详细的介绍之前的博客没介绍到的,所以各位看官不同再回去翻看博主之前那篇红黑树的原 ...
- 从2-3树到 红黑树
原文: 查找(一)史上最简单清晰的红黑树讲解 二叉查找树由于可能会非常的不均衡. 所以用2-3树. 采用上上浮的方法,顶多多两倍节点数. 红黑树一直是数据结构中的难点,大部分关于算法与数据结构的学 ...
- 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409
查找(一)史上最简单清晰的红黑树讲解 2014-05-18 00:05 4037人阅读 评论(6) 收藏 举报 分类: 数据结构(7) 算法(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- 用最简单的话讲最明白的红黑树
前言 首先初生牛犊不怕虎,我想反驳一下许多许多大佬对红黑树中颜色属性的看法.如有冒犯,请忍回去. 大佬的看法: 红黑树是对2-3-4阶树(多路平衡查找树)概念的实现.红色节点是为了和黑色父节点结合形成 ...
- 红黑树(Red Black Tree,RBTree)
一.概念 红黑树是一种自平衡二叉查找树(二叉排序树).与平衡二叉树(avl树)不同的是,红黑树是弱平衡二叉树,即它的左右子树高度差有可能大于1,但不超过一倍. 二.5大性质 每个节点要么是黑色, 要么 ...
- 红黑树简介及左旋、右旋、变色
红黑树简介及左旋.右旋.变色 红黑树(Red Black Tree)是一种自平衡二叉搜索树(二叉查找树),是一种特殊的二叉搜索树,在进行插入和删除时通过特定操作保持二叉树自身的平衡,从而获得较高的查找 ...
最新文章
- 数据结构 单链表 C
- 后台服务显示右下角弹窗 -- system权限创建用户权限进程
- webscoket绑定php uid,Think-Swoole之WebSocket客户端消息解析与使用SocketIO处理用户UID与fd关联...
- Unity协程(Coroutine)原理深入剖析再续
- IPLAT62--新增
- Android Studio 3.1无法导入模块的解决办法
- 矩阵计算 动手学深度学习 pytorch
- ISD9160学习笔记08_结项总结
- 2020年计算机设计大赛参赛回顾与总结
- ipv4v6双栈技术_什么是IPv6双栈技术
- Stitcher: Feedback-driven Data Provider for Object Detection 论文学习
- 浏览器LocalStorage和SharedWorker跨标签页通信-连载2
- [sudo rm -rf /bin/] Linux误删除/bin目录恢复
- 基于高分辨率影像城市绿地信息提取_[转]ENVI支持下利用高分辨率影像城市绿地信息提取方案...
- 软解码与硬解码区别linux,软解码和硬解码哪个好 软解码和硬解码有什么区别
- onsubmit和submit事件处理函数怎么不生效呢?
- 大概是全网最详细的Electron ipc 讲解(三)——定情信物传声筒port
- 中科爱讯WiFi探针在贵宾客户提醒领域的应用
- 九州云出席全球分布式云大会,基于5G MEC的车路协同创新引关注
- 如何用“大小周”搞垮一个公司?
热门文章
- Exonerate安装,执行./configure 时出现 aclocal.m4错误
- USB Audio芯片TYPE-C 型号YW2I2 UAC1.0 Feedback 通话功能
- 人生短暂,持之以恒地做一件事情就会成功(每当烦躁心急如焚的时候就读读这篇文章吧)
- 【板栗糖GIS】arcmap—如何给图层标注加上外部轮廓线
- 油井动液面远程监测系统,将复杂工作简单化
- Dell 755 安装PCI 简易通讯控制器驱 WIN2K3 驱动
- 基于卷积神经网络故障诊断模型的 t-SNE特征可视化
- Animate 动画样式
- IDEA项目Module X must not contain source root Y. The root already belongs to module Z
- 在货仓,连锁分店使用条码数据采集器