当前位置:首页 > 经验 >

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

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

情况3:要删除的是节点 a,它有两个非空子节点,并且节点 a 的后继节点不是a的右子节点:

  1. 找到后继节点 d,并将它删除,删除后继节点 d 的过程参照 CASE 1。
  2. 用d来替换a,并且d的颜色设置的跟a颜色一样。
  3. 如果节点 d 是黑色,为了不违反红黑树路径相同原则,给节点 d 的右子节点 c 多加一个黑色,这个时候节点 c 就成了红 - 黑或者黑 - 黑。
  4. 此时关注节点变成了节点 c,第二步的调整操作就会针对关注节点来做。
3.6.2 删除第二步

经过初步调整之后,关注节点变成了红 - 黑或者黑 - 黑 节点。针对这个关注节点,再分四种情况来进行二次调整。二次调整是为了让红黑树中不存在相邻的红色节点。

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

情况1:关注节点是 a,它的兄弟节点 c 是红色的,我们就依次进行下面的操作:

  1. 围绕关注节点 a 的父节点 b 左旋。
  2. 关注节点 a 的父节点 b 和祖父节点 c 交换颜色。
  3. 关注节点不变,继续从四种情况中选择适合的规则来调整。

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

情况2:关注节点是 a,它的兄弟节点 c 是黑色,并且节点 c 的左右子节点 d、e 都是黑色:

  1. 将关注节点 a 的兄弟节点 c 的颜色变成红色,因为接下来黑圆圈会上移,那么c比a多个深色。
  2. 从关注节点 a 中去掉一个黑色,此时节点 a 就是单纯的红色或者黑色。
  3. 给关注节点 a 的父节点 b 添加一个黑色,这个时候节点 b 就变成红 - 黑或者黑 - 黑
  4. 关注节点从 a 变成其父节点 b,继续从四种情况中选择符合的规则来调整。

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

情况3:关注节点是 a,它的兄弟节点 c 是黑色,c 的左子节点 d 是红色,c 的右子节点 e 是黑色:

  1. 围绕关注节点 a 的兄弟节点 c 右旋。
  2. 节点 c 和节点 d 交换颜色。
  3. 关注节点不变,跳转到情况4,继续调整。

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

栏目热文

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

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

前言面试过程中,多多少少会问一点数据结构(二叉树)的问题,今天我们来复习一下二叉树的相关问题,文末总结。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查看全文 >>

文档排行