zoukankan      html  css  js  c++  java
  • 红黑树——1.介绍与查找


        红黑树(Red Black Tree),红黑树由Rudolf Bayer1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas Robert Sedgewick改成一个比较摩登的名字:红黑树。一开始说说它的历史是有必要的。

        红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
        既然是自平衡二叉树,那么他必定满足二叉树和平衡二叉树的条件,同时请不要把平衡二叉树与完全二叉树混淆。
        补充二叉树的条件如下:
            1)树中的每个结点最多只有两棵子树,即树中任何结点的度数不得大于2。
            2)树有左右之分,而且,子树的左右次序是重要的,即使在只有一棵子树的情况下,也应分清是左子树还是右子树
        平衡二叉树的条件,在满足二叉树的前提下,还必须满足:
            它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差的绝对值不超过1.

        一棵好的平衡二叉树的特征:
            (1)保证有n个结点的树的高度为O(logn)
            (2)容易维护,也就是说,在做数据项的插入或删除操作时,为平衡树所做的一些辅助操作时间开销为O(1)

        同时请注意,这里边会涉及到:节点的前序、中序、后序遍历。
        通常我们会把树设计成这样:
                        (10)
                     /            \
                  (8)             (68)
                 /    \            /      \
             (4)      (9)     (54)     (98)
            /    \              /    \        \
         (2)     (6)      (21)  (57)     (100)
        从上观察,我们发所有现节点都大于他的左孩子,小于它的右孩子,且左子树<右子树
        另外,左子树和右子树的高度之差的绝对值不超过1.
        你可以先入为主的这样认为!!!

    又了以上补充之后,下面继续介绍红黑树(他在linux内核中随处可见,常用在linux内存管理上面)。
    它的优点: 是它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。

    它有以下几个特性:(请先记住,后面我将会利用这些特性来分享它的插入和删除操作,由于查找操作非常容易,就不解释了)

    红黑树是每个节点都带有颜色属性的二叉搜索树,颜色或红色或黑色。在二叉搜索树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:

    性质1. 节点是红色或黑色。

    性质2. 根是黑色。

    性质3. 所有叶子都是黑色(包括NIL)。

    性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

    性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
  • 相关阅读:
    数学笔记目录
    机器学习笔记目录
    物理学笔记目录
    二阶递推公式的通项公式
    分析Analysis 笔记
    从傅里叶变换到小波变换
    电动力学 期末复习
    电动力学 期中复习
    热学 期中复习
    理论力学第一章 Lagrange方程
  • 原文地址:https://www.cnblogs.com/p2liu/p/6048774.html
Copyright © 2011-2022 走看看