zoukankan      html  css  js  c++  java
  • [Data Structure] 红黑树( Red-Black Tree )

    1.  红黑树属性:根到叶子的路径中,最长路径不大于最短路径的两倍。

    2. 红黑树是一个二叉搜索树,并且有

      a. 每个节点除了有左、右、父节点的属性外,还有颜色属性,红色或者黑色。

      b. ( 根属性 ) 红黑树的根只能是黑色

      c. ( 红色属性 ) 红色节点的子节点只能是黑色

      d. ( 黑色属性 ) 从给定的节点到其后代叶子节点的每一条路径上,出现的黑色节点数目一样。其中,从某个节点到其后代叶子节点的路径上出现的黑色节点数,被称为该节点的黑高度( black-height )。

    3. 红黑树上的查找、输出操作和在二叉搜索树上相同。二叉搜索的插入、删除操作应用到红黑树后,可能打破上面提到的红黑树特性。如果打破了,需要调整结构来恢复红黑树的特性。

    4. 插入,每次插入的节点都标示为红色,可能出现两个连续红色节点,以至于打破红色属性。若是打破了,根据叔节点( 父节点的兄弟节点 )的颜色,采用不同的调整方式。

    删除,删除的节点如果是红色,不会打破特性;如果是黑色,可能改变其他节点的黑高,打破黑色属性。若是打破了,同样需要分情况,采用不同的调整方式。

    插入操作、删除操作的具体实现,尚未读透,有需要再深入理解。

    应用场景:Java HashMap 在处理大量 hash 值冲突时,采用红黑树结构存储冲突的元素,提高性能。

    参考资料

    Red-Black Trees, cs.wisc.edu

    Red–black tree, wikipedia

    Red-Black Tree | Set 3 (Delete), geeksforgeeks.org

    第 13 章 红黑树《算法导论》

  • 相关阅读:
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周实验总结&学习总结
    关于我
    各种公告

    笔记 综合
    多项式全家桶
    FFT,NTT 笔记
    省选复习
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5716818.html
Copyright © 2011-2022 走看看