• 算法导论--第13章【红黑树】


    特点:
    1) 每个节点的颜色或是红,或是黑
    2)根节点是黑色
    3)叶节点是黑色
    4)如果一个节点是红色,则叶子为黑
    5)对每个节点,从该节点
    红黑树插入流程:
    第一步:
         和BST的插入过程相似,将待插入节点z插入到一个红黑树的叶子节点,并着红色
    因为第一步之后可能会违反红黑树的某些性质,所以要进行下一步
    第二步:
         第二步只有当插入节点的父节点为红色时才会执行,因为这个时候才会违反性质4)颜色调整分为六种情况,根据插入节点的父节点是祖父节点的左子树还是右子树分为2种,其中每种情况又有以下三种情况:
    情况a:插入节点的父节点是红色节点并且插入节点的叔叔节点(祖父节点的另外一个子节点)也是红色。
    情况b:插入节点是父节点的右子树并且叔叔节点是黑节点
    情况c:插入节点是父节点的左子树并且叔叔节点是黑节点
    针对情况a:


    针对情况b:
         将z的父节点进行一次左旋转转换为情况c
    针对情况c:
         将祖父节点进行一次右旋转转换成最终形态


    步骤三:
         将根节点着为黑色

    习题答案:
    13.1-2
         插入位置是35节点的右子树
         如果被标记为红色,则不是一颗红黑树,因为红色节点的子节点必须为黑色才满足红黑树的性质。
         如果被标为黑色,违反性质5
    13.1-3
         是
    13.1-4
         两个节点是黑色=》2
         一个节点是黑色=》3
         两个节点是红色=》4
    13.1-6
         红黑交叉分布:2^(2k+1)-1
         全黑:2^k-1
    13.1-7
         全黑时最小为0:n
         红黑交错2:1
    13.3-1 
         如果着为黑色,则会永久破坏性质5。
    13.3-2
         
         
    13.3-4 因为当新插入节点不是根节点时,该节点一定为红色,不会更改
    13.3-5 
         TODO

    我的个人博客:http://www.yancey.info/?p=137

  • 相关阅读:
    Linux sed命令实例详解
    hadoop2.0 和1.0的区别
    linux如何修改主机名
    hadoop主节点(NameNode)备份策略以及恢复方法
    Hadoop 添加删除数据节点(datanode)
    Hadoop常见错误及处理方法
    【转】ImageView.ScaleType属性
    MonoBehaviour.print和Debug.Log是同样的作用
    unity自带寻路Navmesh入门教程
    前向渲染路径细节 Forward Rendering Path Details
  • 原文地址:https://www.cnblogs.com/yancey/p/3407767.html
Copyright © 2020-2023  润新知