######仅个人学习使用,如有侵权,请联系删除
红黑树有以下五个性质:
1.根节点为黑色
2.节点为红色或者黑色
3.每个叶子节点NIL为黑色
4.节点为红色,则两个孩子都为黑色(即每条路径上不能有连续两个红色)
5.任意一个节点到其所有子孙节点的NIL的路径上包含相同数目的黑色节点
注意,在红黑树中,把传统二叉树的叶子节点的孩子指向NIL,称NIL为红黑树中的叶子节点。NIL节点中含有指向父节点的指针,这可能是需要把null改为NIL的原因。
一.插入操作
首先以二叉查找树的插入方式插入新的节点(插入的节点都是叶子节点处),并将其涂为红色。然后再进行调整使其满足红黑树的五个性质。
新插入节点先涂为红色的原因:因为插入一个红色节点比插入一个黑色节点违背的性质要 少,这就会减少我们调整二叉树的次数。如果插入黑色节点 ,则必然会违反第5条性质;如果插入为红色节点,则只有一半的机会违反第4条性质,而且违反第4条性质比违反第5条性质比较起来,前者修正要方便一线。
下图为示例图:
N为新插入节点
P为插入节点的父亲节点
U为插入节点的叔父节点
R为根节点
G为祖先节点
插入分为以下三种情况:
1.新节点没有父节点(即插入根节点)