红黑树

作者: 12313凯皇 | 来源:发表于2019-07-25 10:30 被阅读0次

参考文章五分钟搞懂什么事红黑树(全程图解))

JDK 1.8之后,HashMap中引入了红黑树,当Entry链表长度超过一个阈值(8)的时候,它就会进化成一颗红黑树。
红黑树其实就是一颗平衡的二叉查找树,所以在此之前需要先讲一下什么是二叉查找树:

二叉查找树有一下3个特性

  1. 左子树上所有节点的值均小于或等于他的根节点的值。
  2. 右子树上所有节点的值均大于或等于他的根节点的值。
  3. 左右子树也一定分别为二叉查找树。


    二叉查找树示例

有了二叉查找树,我们便可以以此来提高查找效率,但是如果碰到下面这样的二叉查找树,那么查找效率将会退化。


因此,为了保证二叉查找树的某一子树深度不要过深,便有了红黑树。红黑树除了需要满足二叉查找树的特性外,还需满足以下特性

  1. 节点是红色或者黑色。
  2. 根节点是黑色。
  3. 每个叶子节点都是黑色的空节点(null)。
  4. 每个红色节点的两个子节点都是黑色的。
  5. 从任意节点到其每个叶子的所有路径都包含相同的黑色节点。

例如下图就是一个典型的红黑树


当向树中插入或删除元素时,可能会破坏以上特性,那么这时就需要做出调整,调整的方式有变色旋转,旋转又可分为左旋转右旋转

原文篇幅较长且多为图解,全搬过来没有什么意义,所以只记录这些许部分的东西吧,原文写的很好,留个链接在这里:五分钟搞懂什么事红黑树(全程图解))

相关文章

  • 数据结构—树—红黑树

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

  • TreeMap

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

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

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

  • [转载]红黑树

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

  • 拿下红黑树

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

  • 红黑树

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

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

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

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

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

  • Golang红黑树

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

  • 数据结构红黑树添加、修改原理分析

    源码分析大纲 数据结构解析 红黑树试下原理刨析 数据结构解析 1.红黑树 1.1 红黑树概念 红黑树(Red Bl...

网友评论

      本文标题:红黑树

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