红黑树 R-B Tree

作者: Tim在路上 | 来源:发表于2018-11-25 20:24 被阅读2次

我们都知道红黑树就是平衡二叉树的简版。

红黑树,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。

红黑树的特性

  • (1)每个节点或者是黑色,或者是红色。
  • (2)根节点是黑色。
  • (3)如果一个节点是红色的,则它的子节点必须是黑色的。
  • (4)对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。

特性(4),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树。


R-B Tree

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。
例如,Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。

红黑树时间复杂度

红黑树的时间复杂度为: O(lgn)
下面通过“数学归纳法”对红黑树的时间复杂度进行证明。

定理:一棵含有n个节点的红黑树的高度至多为2log(n+1).

证明:
"一棵含有n个节点的红黑树的高度至多为2log(n+1)" 的逆否命题是 "高度为h的红黑树,它的包含的内节点个数至少为 2h/2-1个"。
我们只需要证明逆否命题,即可证明原命题为真;即只需证明 "高度为h的红黑树,它的包含的内节点个数至少为 2h/2-1个"。

从某个节点x出发(不包括该节点)到达一个叶节点的任意一条路径上,黑色节点的个数称为该节点的黑高度(x's black height),记为bh(x)。关于bh(x)有两点需要说明:

第1点:根据红黑树的

"特性(5) ,即从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点"

可知,从节点x出发到达的所有的叶节点具有相同数目的黑节点。这也就意味着,bh(x)的值是唯一的!

第2点:根据红黑色的

"特性(4),即如果一个节点是红色的,则它的子节点必须是黑色的"

可知,从节点x出发达到叶节点

"所经历的黑节点数目">= "所经历的红节点的数目"。

假设x是根节点,则可以得出结论"bh(x) >= h/2"。进而,我们只需证明 "高度为h的红黑树,它的包含的黑节点个数至少为 2bh(x)-1个"即可。

到这里,我们将需要证明的定理已经由
"一棵含有n个节点的红黑树的高度至多为2log(n+1)"
转变成只需要证明
"高度为h的红黑树,它的包含的内节点个数至少为 2bh(x)-1个"。

(01) 当树的高度h=0时,
内节点个数是0,bh(x) 为0,2bh(x)-1 也为 0。显然,原命题成立。

(02) 当h>0,且树的高度为 h-1 时,它包含的节点个数至少为 2bh(x)-1-1。这个是根据(01)推断出来的!

下面,由树的高度为 h-1 的已知条件推出“树的高度为 h 时,它所包含的节点树为 2bh(x)-1”。

当树的高度为 h 时,
对于节点x(x为根节点),其黑高度为bh(x)。
对于节点x的左右子树,它们黑高度为 bh(x) 或者 bh(x)-1。
根据(02)的已知条件,我们已知 "x的左右子树,即高度为 h-1 的节点,它包含的节点至少为 2bh(x)-1-1 个";

所以,节点x所包含的节点至少为 ( 2bh(x)-1-1 ) + ( 2bh(x)-1-1 ) + 1 = 2^bh(x)-1。即节点x所包含的节点至少为 2bh(x)-1。
因此,原命题成立。

由(01)、(02)得出,"高度为h的红黑树,它的包含的内节点个数至少为 2^bh(x)-1个"。
因此,“一棵含有n个节点的红黑树的高度至多为2log(n+1)”。

左旋右旋

https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

相关文章

  • 问题精选-数据结构

    一、红黑树及应用 1.1 红黑树 红黑树(R-B Tree, 全称 Red-Black Tree)是一种特殊的二叉...

  • 数据结构-红黑树

    红黑树简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二分搜索树。红黑树...

  • 红黑树详解

    1、红黑树介绍 红黑树又称R-B Tree,全称是Red-Black Tree,它是一种特殊的二叉查找树,红黑树的...

  • 红黑树之原理详解

    R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找...

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

    R-B Tree简介: 红黑树(Red-Black Tree),它是一种特殊的二叉查找树。红黑树的每个记录都有表...

  • 红黑树详解

    一、定义: R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树...

  • 红黑树

    R-B Tree,全称是Red-Black Tree,又称为“红黑树”,红黑树的每个节点上都有存储位表示节点的颜色...

  • 红黑树笔记

    红黑树:R-B Tree [toc]参考:红黑树(一)之 原理和算法详细介绍红黑树(五)之 Java的实现 1 简...

  • 二叉树 - 红黑树

    0. 定义 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树...

  • 红黑树

    红黑树原理 红黑树(Red-Black Tree,简称R-B Tree),它是一种特殊的二叉查找树。首先它满足二叉...

网友评论

    本文标题:红黑树 R-B Tree

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