红黑树初探(算法导论)

Posted 作死的跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树初探(算法导论)相关的知识,希望对你有一定的参考价值。

红黑树学习


1.红黑树特征

红黑树需要满足5个性质:

  1. 节点要么是红色,要么是黑色。

  2. 根节点是黑色。

  3. 叶子节点是黑色。这里的叶子节点指的是空节点(NIL节点)。

  4. 如果一个节点是红色,那么它的两个子节点都不能是红色。

  5. 从根节点到叶子节点的每一条路径,都包含相等数目的黑色节点。

2.红黑树旋转

为了保证红黑树的性质可以通过左旋、右旋来进行改变其结构

  1. 左旋

    将其和右节点进行旋转操作

    将右节点的做节点作为其右节点、右节点作为其父节点、其作为右节点的左节点

  2. 右旋

    将其和左节点进行旋转操作

    将做节点的右节点作为其左节点、做节点作为其父节点、其作为左节点的右节点

3.插入操作

插入操作可能会破坏红黑树的平衡、插入后需要进行修复处理

插入节点和插入一般二叉树一致、只将其节点颜色标记为红色。

将插入节点颜色记为红色对于破坏红黑树的性质比较少。

  1. 性质1不会被破坏

  2. 性质2如果当前书为空时会被破坏

  3. 性质3叶子节点是黑色、这里的叶子节点是红黑树的nil节点。不会被破坏

  4. 性质4可能会被破坏如果父节点为红色,插入节点也为红色

  5. 性质5不会被破坏

4.删除操作

删除操作也可能会破坏平衡、删除后需要进行修复处理

删除节点和一把二叉树一致、搜索对应节点进行删除


后续理解继续学习


以上是关于红黑树初探(算法导论)的主要内容,如果未能解决你的问题,请参考以下文章

红黑树-Java红黑树,算法导论实现版

算法导论 之 红黑树 - 删除[C语言]

算法导论 红黑树 学习 删除

算法导论读书笔记-第十三章-红黑树

算法导论第13章,红黑树

算法导论 之 红黑树 - 插入[C语言]