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

    1 理解左旋和右旋

     旋转是相对于所选定的两个节点及其兄弟节点构成的三角形而言的,左旋转就是这两个节点构成的边向左旋转到了另外一条边,而右旋转就是这两个节点够的边向右旋转到了另外一条边上。旋转成功了之后,当了父亲的儿子多出来的一条边就给了原来的父亲。 

    旋转的步骤:

    第一步,选定要进行旋转的两个节点,父亲和儿子。

    第二步,父亲、儿子和父亲的另外一个儿子(没有就虚构一个),三个人构成一个三角形;

    第三步,左旋转就是父亲和儿子构成的边向左旋转到另外一条边上,右旋转就是父亲和儿子构成的边向右旋转到另外一条边上。

    2 红黑树的5个特征

    颜色限制:只有两种颜色,红色和黑色。

    根和叶子节点限制:黑色。

    对所有红色节点的限制:红色节点的子节点都是黑色节点。

    对所有黑色节点的限制:任意节点到叶子节点的路径上的黑色节点的数目是相同的。

    3 红黑树的平衡插入

    新插入的节点设置为红色。因为原来的树是满足条件的红黑树,即任意节点到叶子节点的路径上的黑色节点的数目是相同的。如果插入了黑色,那么这条性质就违反了。插入红色的话,尽管可能违反红色节点的子节点都是黑色节点,但是可以通过调换父子节点的颜色来调整。

    具体参考相应的代码。 

    4 红黑树的平衡删除

    具体参考相应的代码。

  • 相关阅读:
    CheckBox单选功能
    DOTNET
    常用命令行
    不能调试的问题的解决
    url字符串中含有中文的处理
    案例:星移eWorkflow.net系统
    使用正则表达式求完整路径中的文件名
    缺少一个***.resource的报告的解决
    Mapx中的图元移动
    Distance计算的距离随经纬度不同
  • 原文地址:https://www.cnblogs.com/hustdc/p/10937869.html
Copyright © 2011-2022 走看看