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

    1 理解左旋和右旋

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

    旋转的步骤:

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

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

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

    2 红黑树的5个特征

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

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

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

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

    3 红黑树的平衡插入

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

    具体参考相应的代码。 

    4 红黑树的平衡删除

    具体参考相应的代码。

  • 相关阅读:
    动态创建多个pictureBox控件并响应不同的事件
    浅谈程序效率问题
    winform 下实现消息传递机制
    兼容IE的最小最大高度CSS写法
    推荐14款web开源测试工具
    winform程序窗体相关设置
    Mysql配置及错误集合
    深入理解栈
    广而博,深而远
    POJ3009
  • 原文地址:https://www.cnblogs.com/hustdc/p/10937869.html
Copyright © 2011-2022 走看看