算法导论--第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

原文地址:https://www.cnblogs.com/yancey/p/3407767.html