Red-Black Tree Insertion Fixup

来源:互联网 发布:中国专业网络配音平台 编辑:程序博客网 时间:2024/05/16 07:21

RB-INSERT-FIXUP(T,z)
 while color[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[z]]
         then z<- p[z]
          LEFT-ROTATE(T,z)
      color[p[z]]<- BLACK
      color[p[p[z]]]<- RED
      RIGHT-ROTATE(T,p[p[z]])
  else   //p[z]=right[p[p[z]]]
    then y<- left[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 = left[p[z]]
         then z<- p[z]
          RIGHT-ROTATE(T,z)
       color[p[z]]<- BLACK
       color[p[p[z]]]<- RED
       LEFT-ROTATE(T,p[p[z]])
 color[root[T]]<- BLACK

原创粉丝点击