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

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

3.2、HashMap准备知识:红黑树

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

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

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

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

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

请注意二叉查找树的定义和我们之前文章已经介绍过的堆树定义的区别,简单来说前者的定义更严格。针对以上对二叉查找树的定义,以下的树结构都是二叉查找树:
html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值