美文网首页
10.红黑树

10.红黑树

作者: LucXion | 来源:发表于2022-02-13 15:55 被阅读0次

特性:

  1. 节点非红即黑
  2. 根节点是黑
  3. 叶子节点都是黑
  4. 红节点的子节点或父节点都是黑
  5. 从任一节点到叶子节点的所有路径都包含相同个数的黑节点
  6. 红黑树等价4阶B树,由黑色节点与它的红色子节点合并成为一个节点

下图非红黑树,因为38节点有一条隐藏的路径往右空节点,此路径不满足特性5

添加操作:

节点共有4种情况,添加操作一共有12种情况

所有添加的节点默认为红色节点

不用做处理的情况

需要做处理的情况


LL/RR:单旋


LR/RL:双旋


LL+上溢


RR+上溢


LR+上溢

RL+上溢 参照 LR + 上溢

删除操作:

B树中,最后真正被删除的元素都在叶子节点中

删除红色节点不需要做处理

  1. 拥有两个红色节点的黑色节点(不能直接删除,需要使用前驱或者后继节点替代删除)

  2. 拥有一个红色节点的黑节点

    • 将替代的节点染黑
  3. 单独一个黑节点(88)

    • 替代的子节点是黑色(空的黑色节点,不要再直接根据度来判断)

      • 当前节点没有元素,发生下溢,旋转,继承颜色,独立的B树节点染黑

      • 三种情况为兄弟为黑色节点,且有红色子节点可借


      • 两种情况为兄弟为黑色节点但无节点可借,区分点为父节点为红节点还是为黑节点

一种情况为兄弟是红色节点,那么先通过旋转达到上面的情况,再处理

红黑树的平衡:没有一条路径会大于其他路径的2倍,最短路径为全部黑节点,最长路径为黑节点=红节点,因为黑节点数量一致,所以不可能超过2倍

AVL树、红黑树对比

相关文章

  • 10.红黑树

    特性: 节点非红即黑 根节点是黑 叶子节点都是黑 红节点的子节点或父节点都是黑 从任一节点到叶子节点的所有路径都包...

  • 数据结构—树—红黑树

    红黑树概述 红黑树的插入 红黑树的删除

  • TreeMap

    需要先了解红黑树,这是之前分析红黑树的文章。之前在分析红黑树时,我认为红黑树=二叉查找树+红黑平衡,关于二叉查找树...

  • 数据结构与算法-AVL 红黑树

    AVL树AVL树 算法红黑树红黑树 B站

  • [转载]红黑树

    https://zhuanlan.zhihu.com/p/24367771红黑树简介红黑树插入红黑树删除

  • 拿下红黑树

    红黑树 红黑树、2-3树的简单定义: 实现红黑树的基本结构以及添加操作(维护定义,左旋、右旋、颜色反转) 红黑树与...

  • 红黑树

    啥是红黑树,红黑树 = 二叉树

  • 彻底理解红黑树(二)之 插入

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的插入情况...

  • 彻底理解红黑树(三)之 删除

    彻底理解红黑树(一)之 二叉搜索树彻底理解红黑树(二)之 插入彻底理解红黑树(三)之 删除 前言 红黑树的删除情况...

  • Golang红黑树

    红黑树 红黑树是每个节点都带有颜色属性(红色或黑色)的二叉查找树。红黑树也属于自平衡二叉查找树。 红黑树具有如下性...

网友评论

      本文标题:10.红黑树

      本文链接:https://www.haomeiwen.com/subject/xtthlrtx.html