美文网首页
算法导论红黑树笔记

算法导论红黑树笔记

作者: 琦思妙想君 | 来源:发表于2018-09-27 18:17 被阅读13次

红黑树是一种比较“平衡”的二叉搜索树,可以保证在最坏情况下基本动态集合操作的时间复杂度为 O(lgn)

红黑树的性质

红黑性质:
1.每个结点或是红色的,或者是黑色的
2.根结点是黑色的
3.叶结点是黑色的
4.如果一个结点是红色的,则它的两个子结点都是黑色的
5.对每个结点,从该结点到其所有的后代叶结点的简单路径上,均包含相同数目的黑色结点

一颗有 n 个结点的红黑树的高度至多为 2lg(n+1),这是因为性质 5 的约束导致的,是红黑树和普通二叉搜索树的主要区别,也是红黑树的性能保证基础

旋转

旋转是一种对二叉搜索树的局部操作,在操作后能保持二叉搜索树的性质。
红黑树的插入和删除操作后,可能会破坏树的红黑性质,旋转操作被用来调整局部结构,帮助维护红黑性质
旋转分为左旋和右旋

插入

先说性能,向一个 n 个元素的红黑树插入一个新元素可以在 O(lgn) 时间内完成
红黑树插入元素比较复杂,分为两步进行:
1.按普通二叉搜索树的方法找到合适的位置,插入元素并标位红色
2.通过一系列操作调整红黑树,以维持红黑树的性质
核心在于调整的部分,思路是:
1.分析插入一个新元素后,有哪些红黑树的性质可能被破坏
2.建立一个循环不变式,将指针 z 从底向上迭代(情况1)
3.在特定的条件终止迭代(情况2和情况3)

删除

红黑树的删除操作可以在 O(lgn) 时间内完成
删除操作也分两步进行:
1.用类似普通二叉搜索树删除元素的方法,删除红黑树的元素
2.调整红黑树,维持红黑性质
删除操作比插入操作更复杂

相关文章

  • 算法导论红黑树笔记

    红黑树是一种比较“平衡”的二叉搜索树,可以保证在最坏情况下基本动态集合操作的时间复杂度为 O(lgn) 红黑树的性...

  • HashMap1.8 源码解析(3)--TreeNode(红黑树

    完整代码:代码 前言 在写这篇文章之前,我针对红黑树参考算法导论写了一篇文章图解红黑树-算法导论-java实现基于...

  • 红黑树

    首先说明一点,这里实现的红黑树,和《算法》(第四版)里面的算法是一样的,不是按照《算法导论》里面的红黑树算法写的。...

  • 红黑树-算法导论

    这个周看算法导论,看到红黑树,看的我云里雾里绕啊。虽然最后看懂了,据我估计,要是过一个星期不看保证忘干净,因此决定...

  • 红黑树专题

    0.目录 1.算法导论的红黑树本质上是2-3-4树 2.红黑树的结构和性质 3.红黑树的插入 4.红黑树的删除 5...

  • 数据结构与算法(十四)深入理解红黑树和JDK TreeMap和T

    本文主要包括以下内容: 什么是2-3树 2-3树的插入操作 红黑树与2-3树的等价关系 《算法4》和《算法导论》上...

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

    正文之前 不得不说,《算法导论》的伪代码真的是好东西,轻轻一改就是一个船新版本的红黑树具体实现方式。。不多说,直接...

  • 算法导论之红黑树&区间树

    实验要求 实验代码 区间树的很多操作是红黑树进行一点简单的修改,区间树中加入的max域 注意在插入和旋转的时候进行...

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

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

  • 《算法导论》读书笔记之红黑树

    什么是红黑树? 红黑树是一棵二叉搜索树,它的结点上新增了一个存储位来表示结点的颜色,颜色可以是红或者黑。通过颜色进...

网友评论

      本文标题:算法导论红黑树笔记

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