• DataStructuresAndAlogorithm--红黑树


    简介

    为了理解红黑树(red-black tree)是什么,首先需要知道二叉树。

     定义1:二叉树是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的,称为该根的左子树和右子树的二叉树组成。 

    但是为了解决实际问题,往往需要对数据作一定的排序,这样才能更快速的找到所要的数据。基于此,我们需要了解下二叉搜索树(Binary Search Tree, BST)。

    定义2:设结点由关键字值表征,假定所有结点的关键字值各不相同,二叉搜索树或者谁一棵空二叉树,或者是具有下列性质的二叉树:
        1)若左子树不空,则左子树上所有结点的关键字值均小于根结点的关键字值
        2)若右子树不空,则右子树上所有结点的关键字值均大于根结点的关键字值
        3)左,右子树也分别是二叉搜索树

    然而,某些极端情况下,二叉搜索树可能会变成只有左子树或只有右子树等这些极端情况,相当于树退化成了一个链表,为了防止这种退化,我们需要了解些二叉平衡树。

    定义3:二叉平衡树又成AVL树(G.M.Adel'son-Vel'skii和E.M.Landis),它或者是一棵空二叉树,或者是具有下列性质的二叉树:
        1)其根的左,右子树高度之差的绝对值不超过1
        2)其根的左,右子树都是二叉平衡树

    然而,这还不是非常完美,因为二叉平衡树的性质1导致了其为了维护其平衡性,需要作过多的旋转调整操作,基于此,红黑树这个弱化的二叉平衡树横空出世。

    红黑树在每个结点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK。通过对任何一条根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因为是近似平衡的。红黑树可以保证在最坏情况下基本动态集合操作的时间复杂度为O(logn)。

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

    1)每个结点的或是红色的,或是黑色的
    2)根结点是黑色的
    3)每个叶结点(NIL)是黑色的
    4)如果一个结点是红色的,则它的两个子结点都是黑色的
    5)对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点
  • 相关阅读:
    如何理解「复位 」?
    menuconfig配置
    编译Linux内核过程中遇到的问题与解决
    解决qt 5.14版本 qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization faile问题
    认真教好软件工程
    2016同学们博客链接汇总
    车站订票系统可行性分析报告
    第四纪与地貌学(1)——长江口第四纪沉积物中构造与古气候耦合作用的探讨
    软件工程(1)——对书本的温习
    四则运算
  • 原文地址:https://www.cnblogs.com/microcat/p/10810424.html
Copyright © 2020-2023  润新知