zoukankan      html  css  js  c++  java
  • 算法导论--第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

  • 相关阅读:
    使用java中的注解@see
    MacOS软件默认安装路径
    学习MACD指标
    go CD 用虚拟机快速增加一个新agent
    git推送本地分支到远程分支
    git如何切换远程仓库
    git命令查看远程分支
    Java 学习札记(一)JDK安装配置
    Oracle 基本操作符
    C# 常用控件属性及方法介绍
  • 原文地址:https://www.cnblogs.com/yancey/p/3407767.html
Copyright © 2011-2022 走看看