zoukankan      html  css  js  c++  java
  • 红黑树

    一、红黑树产生背景

      它是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。在二叉排序树中,可以支持任何一种基本动态集合的操作,其时间复杂度均为O(h).因此,如果搜索树的高度较低时,这些集合操作就会执行得特别快,红黑树是许多平衡搜索树中的一种,可以保证在最坏的情况下基本动态集合操作的时间复杂度为O(logn).

    二、红黑树的性质

      红黑树是一颗二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是红色或者黑色。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因为是近乎平衡的。

      树的每个结点包含5个属性:color、key、left、right和p.如果一个结点没有子节点或者父结点,则该结点相应指针属性的值为NIL.我们可以把这些NIL视为只想二叉搜索树的叶结点的指针,而把带关键字的结点视为树的内部结点。

      一颗红黑树是满足下面红黑性质的二叉搜索树:

      (1)每个结点是红色的,或是黑色的。

      (2)根结点是黑色的。

      (3)每个叶结点(NIL)是黑色的

      (4)如果一个结点是红色的,则它的两个两个子节点都是黑色的。

      (5)对每个结点,从该结点到期所有的后代叶结点的简单路径上,均包含相同数目的黑色结点。

  • 相关阅读:
    python实战===python程序打包成exe
    python基础===100盏灯的问题
    安全测试===dos攻击和ddos攻击
    Ubuntu16.04安装Consul
    kerberos相关
    Linux终端复制粘贴后前后会多出0~和~1
    Superset配置impala数据源
    Airflow使用指南
    Superset配置hive数据源
    Superset配置mysql数据源
  • 原文地址:https://www.cnblogs.com/rainydayfmb/p/7542112.html
Copyright © 2011-2022 走看看