美文网首页
数据结构-树-红黑树基本概念

数据结构-树-红黑树基本概念

作者: TioSun | 来源:发表于2020-08-25 14:06 被阅读0次

红黑树是平衡二叉查找树的一种,所以在讲红黑树之前,我们要先了解下什么是平衡二叉查找树。首先我们知道什么是二叉查找树,二叉查找树在极端情况下,可能会变成链表,这个时候就需要平衡二叉查找树了。

什么是平衡二叉树

平衡二叉树的严格定义是任何一个节点,其左右子树的高度差不能大于1。从该定义上来说,满二叉树和完全二叉树都符合这个定义,所以满二叉树和完全二叉树都是平衡二叉树。非完全二叉树也有可能会是平衡二叉树如下图:


非完全二叉树的平衡二叉树
什么是平衡二叉查找树呢?

平衡二叉查找树就是同时满足平衡二叉树和二叉查找树的树。但是,很多平衡二叉查找树其实并没有严格满足上述条件,比如我们要说的红黑树,其左右子树的高度差就有可能大于1。很多人可能会说那还能叫平衡二叉查找树吗?平衡二叉查找树出来的初衷就是为了解决频繁插入、删除等更新行为导致的二叉查找树时间复杂度退化的情况,所以只要能满足左右子树相对平衡(树看起来相对对称),不会出现左边很高,右边很低(或相反)的情况就可以称为平衡了(换句话说只要满足频繁地插入或删除等更新动作不会导致复杂度退化即可)。
红黑树是平衡二叉查找树的一种,可能也是我们最常听到的一种,除了红黑树外,平衡二叉查找树还有诸如AVL树,Treap(树堆)等。

什么是红黑树?

红黑树简称R-B Tree(Red-Black Tree),是一种不严格的平衡二叉树,其节点一部分会被标记为黑色,另一部分会被标记为红色,此外还需满足以下几点要求

  1. 根节点为黑色
  2. 叶子节点必须是黑色空节点,即叶子节点不存储数据
  3. 父子节点之间不能同时为红色
  4. 从任意节点出发,到达其可达的叶子节点的所有路径都包含相同的黑色节点数
    初次了解红黑树时,可能会对第二点产生疑惑,在了解红黑树概念的时候,不用太计较第二点,因为第二点是为了方便代码实现而设计的。可能单纯的文字还是会有疑惑,下面用图例来进行说明(为了理解方便,先抛开第二点)


    红黑树图例1
    红黑树图例2

相关文章

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

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

  • 数据结构 - 红黑树

    更多数据结构内容,请参考:数据结构 - 概要 简介 红黑树介绍请参考: 漫画:什么是红黑树? 面试旧敌之红黑树 红...

  • 红黑树的原理(持续更新)

    红黑树的基本概念 红黑树(英语:Red–black tree)是一种自平衡二叉查找树。维基百科红黑树:https:...

  • Red-Black Tree

    红黑树 前段时间看到STL map使用的数据结构是红黑树,研究了一下。 红黑树的由来 红黑树是二叉查找树的升级版本...

  • JDK1.8 之 集合框架 TreeMap TreeSet

    了解 Tree 之前我们必须了解 红黑树 因为Tree 的数据结构就是红黑树 红黑树的特性(1)每个节点或者是黑色...

  • 数据结构08-红黑树

    数据结构08-红黑树 一、红黑树的介绍 红黑树(RBT)是每个节点都带有颜色属性的自平衡二叉查找树,颜色或红色或黑...

  • 数据结构-树-红黑树基本概念

    红黑树是平衡二叉查找树的一种,所以在讲红黑树之前,我们要先了解下什么是平衡二叉查找树。首先我们知道什么是二叉查找树...

  • hashmap源码分析

    HashMap的数据结构 从上图中可以很清楚的看到,HashMap的数据结构是数组+链表+红黑树(红黑树since...

  • 数据结构-红黑树学习笔记(转)

    rbt(红黑树) 图解红黑树:https://www.jianshu.com/p/0eaea4cc5619数据结构...

  • java8中hashmap源码分析,put()方法详细分析

    一.源码大纲 1.了解红黑树原理(可翻看上一个文章,[红黑树原理分析](数据结构红黑树添加、修改原理分析 - 简书...

网友评论

      本文标题:数据结构-树-红黑树基本概念

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