当前位置:首页 > 经验 >

红黑树和平衡二叉树的优缺点(红黑树为什么是平衡二叉树)

来源:原点资讯(www.yd166.com)时间:2022-11-14 14:09:12作者:YD166手机阅读>>

情况4:关注节点 a 的兄弟节点 c 是黑色的,并且 c 的右子节点是红色的,我们就依次进行下面的操作:

  1. 围绕关注节点 a 的父节点 b 左旋。
  2. 将b的颜色复制给c,因为c替代了b的位置。
  3. 将关注节点 a 的父节点 b 的颜色设置为黑色。
  4. 从关注节点 a 中去掉一个黑色,节点 a 就变成了单纯的红色或黑色。
  5. 将关注节点 a 的叔叔节点 e 设置为黑色,调整结束。
  6. 此时a跟d深度是一样的,因为无法判别ad是否为红,直接将b设置为黑的了,此时e提高了一度为保持平衡也设置为黑色的了。
3.6.3 删除理解
  1. 多画图,不画图单看代码一会儿就眩晕了。
  2. 插入跟删除算法都是用到了递推,比如插入情况1,情况1的处理之后,关注节点从本身变成了它的祖父红色节点,这就是往根节点递推。不过情况1处理过一次之后,不一定会进入情况2或者情况3,有可能还在情况1。在情况1的情况下一直往根节点走,因为当前节点永远是红色,所以在最后要把根节点涂黑。同时只要进入到情况2、情况3情况,操作就跟上面说过的类似了。
  3. 要记住,除了关注的节点所在的子树,其他的子树本身都是一颗红黑树,它们是满足红黑树的所有特征的。当关注节点往根节点递推时,这个时候关注节点的子树也已经满足了红黑树的定义,我们就不用再去特别关注子树的特征。只要注意关注节点往上的部分。这样就能把问题简化,思考的时候思路会清晰一些。
  4. 再说到删除算法,注意红-黑跟黑-黑存在的原因,为何最终都会走到从兄弟节点的地方做文章来实现最终的平衡。
  5. 删除情况1的目的只是为了能够进入接下来的三个情况中。
  6. 删除情况2的套路又是一个递推思路,关注节点往根节点递推,让其左右子树都满足红黑树的定义。因为往上推,右子树多了一个黑色节点,就把关注节点的兄弟节点变红。
  7. 删除情况3是为了进入删除情况4,提前变色的原因和情况2是一样的,都是为了满足黑色深度相同。同样是归纳推理的思路。都要记住一点,各种情况下的其他子树节点都满足红黑树的定义,需要分类讨论的,都在这几种情况中了。
  8. 可能你看今天看了红黑树的删除你顿悟了,过了半个月又迷糊了。不要怕!因为怕也没用,再看呗。学习红黑树本身也不是为了面试字节去默写,而是去学习思想,锻炼思维,复杂问题简单化,当然了顺带也可以装的一手好B。
参考资料

红黑树和平衡二叉树的优缺点,红黑树为什么是平衡二叉树(29)

推荐一个零声教育C/C 后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C 后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

原文:红黑树硬核讲解

,

栏目热文

红黑树为什么叫平衡二叉树(详解什么是平衡二叉树)

红黑树为什么叫平衡二叉树(详解什么是平衡二叉树)

前言面试过程中,多多少少会问一点数据结构(二叉树)的问题,今天我们来复习一下二叉树的相关问题,文末总结。1. 二叉树的由...

2022-11-14 14:52:59查看全文 >>

二叉树和红黑树(二叉树和树的关系)

二叉树和红黑树(二叉树和树的关系)

红黑树在工程中的使用,红黑树是平衡树的一种。1. 红黑树顺序的功能2. 快速查找的功能1.二叉树插入1. 如果比当前根节...

2022-11-14 14:17:23查看全文 >>

为什么用红黑树而不是二叉树(红黑树和二叉树优缺点)

为什么用红黑树而不是二叉树(红黑树和二叉树优缺点)

上两节,我们依次讲了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时...

2022-11-14 14:26:38查看全文 >>

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

通俗讲红黑二叉树原理(红黑树为什么是平衡二叉树)

【51CTO.com原创稿件】 学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树...

2022-11-14 14:42:53查看全文 >>

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

红黑树和平衡二叉树区别(详解什么是平衡二叉树)

一,AVL树(平衡二叉树)(1)简介AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现...

2022-11-14 14:23:26查看全文 >>

红黑树与b+树区别(红黑树解决什么问题)

红黑树与b+树区别(红黑树解决什么问题)

树的定义树是包含n(n>1)个结点,n-1条边的有穷集,其中:(1)每个元素称为结点;(2)有一个特定的结点称为根...

2022-11-14 14:55:20查看全文 >>

红黑树的高度和深度区别(红黑树的原理动态图)

红黑树的高度和深度区别(红黑树的原理动态图)

专注于Java领域优质技术,欢迎关注作者:JasonGaoH之前在公司组内分享了红黑树的工作原理,今天把它整理下发出来,...

2022-11-14 14:34:32查看全文 >>

红黑树二叉树的区别(红黑树和平衡二叉树区别)

红黑树二叉树的区别(红黑树和平衡二叉树区别)

很早之前就想写一篇关于红黑树的文章,但是由于担心自己理解的不透彻,就一直不敢下笔。于是在重新看了很多篇文章和资料之后,决...

2022-11-14 14:11:33查看全文 >>

红黑树与平衡二叉树的区别(红黑树平衡树对比)

红黑树与平衡二叉树的区别(红黑树平衡树对比)

红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。简单说就是可用于二分查找的(二叉查找树),且高度是平衡的(...

2022-11-14 14:54:56查看全文 >>

红黑树一定是平衡二叉树吗(红黑树是一个平衡的二叉排序树)

红黑树一定是平衡二叉树吗(红黑树是一个平衡的二叉排序树)

二叉搜索树的局限性 上一节较为详细的介绍了C语言中的二叉搜索树,提到数据采取二叉搜索树的结构存储,可以获得不错的搜索性能...

2022-11-14 14:51:45查看全文 >>

文档排行