红黑树 安插删除
红黑树 插入删除
插入节点
情况1:新结点N位于树的根结点,没有父结点
情况2:新结点的父结点P是黑色
情况3:父结点P、叔叔结点U,都为红色
【对应于第二篇文章中的情况1:z的叔叔是红色的】
情况4:父结点P是红色的,叔叔结点U是黑色或NULL
【对应第二篇文章中的情况2:z的叔叔是黑色的,且z是右孩子】
情况5:父结点P是红色,而叔叔结点U是黑色或NULL
要插入的结点N是其父结点的左孩子,而父结点P又是其祖父G的左孩子
【对应第二篇文章中情况3:z的叔叔是黑色的,且z是左孩子】
删除节点
情况1:N是新的根
情况2:兄弟结点S是红色的
【对应于第二篇文章中情况1:x的兄弟结点w是红色的】
情况3:兄弟结点S是黑色的,却S的两个儿子都是黑色的。但N的父结点P是黑色
【对应于第二篇文章中情况2:x的兄弟结点w是黑色的,且兄弟结点w的两个儿子都是黑色的】
(这里,N的父结点P为黑色)
情况4:兄弟结点S是黑色的,S的儿子也都是黑色的,但是N的父亲P是红色
【对应于第二篇文章中情况2:x的兄弟结点w是黑色的,且w的两个孩子结点都是黑色的】
(这里,N的父结点P为红色)
情况5:兄弟结点S为黑色,S的左孩子为红色,S的右孩子是黑色,而N是它父结点的左儿子
//此种情况,最后转化为下面的情况6
【对应于第二篇文章中情况3:x的兄弟w是黑色的,w的左孩子是红色的,w的右孩子是黑色】
情况6:兄弟结点S是黑色的,S的右孩子是红色的,而N是它父结点的左儿子
【对应于第二篇文章中情况4:x的兄弟结点w是黑色的,且w的右孩子是红色的】
这里6号应该为红色
这里6号应该为红色