源码阅读(17):红黑树在Java中的实现和应用

Posted 说好不能打脸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码阅读(17):红黑树在Java中的实现和应用相关的知识,希望对你有一定的参考价值。

(接上文《源码阅读(16):Java中主要的Map结构——HashMap容器(上)》)

3.2、HashMap准备知识:红黑树

红黑树又称自平衡二叉查找树,由于其稳定的查找特性,红黑树在Java中有广泛的应用——例如我们将要讲解的TreeMap容器和当前正在讲解的HashMap容器都有红黑树的具体应用。红黑树的操作原理相对于我们已经讲解过的堆树要复杂一些,但也并不是说无法理解,读者只需要跟随本节的介绍思路进行理解,并自行动手对其中提到的关键点进行验证,即可掌握红黑树的基本原理。

在网络上也有一些介绍红黑树的资料,但部分资料生涩难懂,甚至有一部分资料存在明显的错误,无法实现红黑树的构造还原。本文将通过图文结合的方式,介绍红黑树构造的本质。

3.2.1、二叉查找树(二叉搜索树)

要讲解红黑树,就必须首先介绍二叉查找树,因为红黑树是二叉查找树在极端情况下,稳定其时间复杂度的一种优化结构。所谓二叉查找树是指这样一颗树:

  1. 首先它是一颗二叉树
  2. 如果当前树的根结点存在左子树,则左子树上的任意结点的权值均小于当前根结点的权值
  3. 如果当前树的根节点存在右子树,则右子树上的任意结点的权值均大于当前根结点的权值
  4. 以此类推,以当前树上任何结点作为子树的根结点,则其左子树和右子树上的结点权值特点均满足以上第2点和第3点的描述
  5. 二叉查找树上的结点,没有权值相等的两个结点。

请注意二叉查找树的定义和我们

以上是关于源码阅读(17):红黑树在Java中的实现和应用的主要内容,如果未能解决你的问题,请参考以下文章

源码阅读(22):Java中其它主要的Map结构——TreeMap容器

红黑树在HashMap中的应用

红黑树的理解与Java实现

红黑树的理解与Java实现

Java实现与红黑树

深入理解红黑树(RBT)