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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    数组协变性
    tomcat源码阅读23
    用枚举来实现单例模式
    CSS 的 zindex 属性
    屏幕大小与视区大小
    CSS 生成的模态窗口
    事件处理程序的绑定
    事件对象的属性和使用
    android打电话,接电话,挂电话过程
    ubuntu 12.04编译ics
  • 原文地址:https://www.cnblogs.com/Pjson/p/8747471.html
Copyright © 2011-2022 走看看