Red-black tree
大家好,我有个关于红黑树的问题想请教下。
在红黑树的插入算法(RB-INSERT(T,z))的子程序RB-INSERT-FIXUP(T,z)的伪代码中,为什么没有考虑
whilecolor[p[z]]<-RED//
do if p[z]=left[p[p[z]]]
then y<-right[p[p[z]]]
if color[y]=RED
then color[p[z]]<-BLACK
color[y]<-BLACK
color[p[p[z]]]<-RED
z<-p[p[z]]
else if z=right[p[p[z]]]
then z<-p[z]
LEFT-ROTATION(T,z)
color[p[z]]<-BLACK
color[p[p[z]]]<-RED
RIGHT-ROTATION(T,p[p[z]])
else (same as then clause
with "right" and "left" exchanged)
color[root[T]]<-BLACK
在最初的时候,为什么没考虑color[p[z]]<-BLACK?在这种情况下,若color[left[p[z]]]=BLACK, color[z]=red,若不进行颜色调整,就违反了红黑树的性质5:For each node, all paths from the node to descendant leaves contain the same number of black nodes.
如果一个node颜色是RED,那是不是一定有两个真实的子节点,或者没有子节点?