红黑树的插入

以下是红黑树插入的伪代码:

 

RB-INSERT(T, z)
 1  y  nil[T]
 2  x  root[T]
 3  while x  nil[T]
 4      do y  x
 5         if key[z] < key[x]
 6            then x  left[x]
 7            else x  right[x]
 8  p[z]  y
 9  if y = nil[T]
10     then root[T]  z
11     else if key[z] < key[y]
12             then left[y]  z
13             else right[y]  z
14  left[z]  nil[T]
15  right[z]  nil[T]
16  color[z]  RED
17  RB-INSERT-FIXUP(T, z)

 

 

RB-INSERT-FIXUP(T, z)

 1 while color[p[z]] = RED

 2     do if p[z] = left[p[p[z]]]

 3           then y right[p[p[z]]]

 4                if color[y] = RED

 5                   then color[p[z]] BLACK                    Case 1

 6                        color[y] BLACK                     Case 1

 7                        color[p[p[z]]] RED                   Case 1

 8                        z p[p[z]]                            Case 1

 9                   else if z = right[p[z]]

10                           then z p[z]                       Case 2

11                                LEFT-ROTATE(T, z)              Case 2

12                           color[p[z]] BLACK               Case 3

13                           color[p[p[z]]] RED                Case 3

14                           RIGHT-ROTATE(T, p[p[z]])            Case 3

15           else           same as then clause with "right" and "left" exchanged

                  y left[p[p[z]]]

                  if color[y] = RED

                     then color[p[z]] BLACK                    Case 4

                          color[y] BLACK                     Case 4

                          color[p[p[z]]] RED                   Case 4

                          z p[p[z]]                            Case 4

                     else if z = left[p[z]]

                           then z p[z]                       Case 5

                                RIGHT-ROTATE(T, z)           Case 5

                           color[p[z]] BLACK               Case 6

                           color[p[p[z]]] RED                Case 6

                           LEFT-ROTATE(T, p[p[z]])              Case 6

 

16 color[root[T]] BLACK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值