红黑树(red-black tree)

左旋&&右旋

Left Rotate
 1 LEFT-ROTATE(T,x)
2 y=RIGHT(x)
3 RIGHT(x)=LEFT(y)
4 if(LEFT(y)!=NIL(T))
5 P(LEFT(y))=x
6 P(y)=P(x)
7 if(P(x)==NIL(T))
8 Root(T)=y
9 else if(LEFT(P(x))==x)
10 LEFT(P(x))=y
11 else
12 RIGHT(P(x))=y
13 LEFT(y)=x
14 P(x)=y
15
16

 

Right Rotate
 1 RIGHT-ROTATE(T,x)
2 y=P(x)
3 LEFT(y)=RIGHT(x)
4 if(RIGHT(x)!=NIL(T))
5 P(RIGHT(x))=y
6 P(x)=P(y)
7 if(P(x)==NIL(T))
8 Root(T)=x
9 else if(LEFT(P(x))==y)
10 LEFT(P(x))=x
11 else
12 RIGHT(P(x))=x
13 RIGHT(x)=y
14 P(y)=x
Right Rotate
 1 RIGHT-ROTATE(T,y)
2 x=LEFT(y)
3 LEFT(y)=RIGHT(x)
4 if(RIGHT(x)!=NIL(T))
5 P(RIGHT(x))=y
6 P(x)=P(y)
7 if(P(y)==NIL(T))
8 Root(T)=x
9 else if(LEFT(P(y))==y)
10 LEFT(P(y))=x
11 else
12 RIGHT(P(y))=x
13 P(y)=x
14 RIGHT(x)=y

 

插入

rb insert
 1 RB-INSERT(T,z)
2 y=NIL(T)
3 x=Root(T)
4 while(x!=NIL(T))
5 y=x
6 if(key(z)<key(x))
7 x=LEFT(x)
8 else
9 x=RIGHT(x)
10 p(z)=y
11 if(y==NIL(T))
12 Root(T)=z
13 else if(key(z)<key(y))
14 LEFT(y)=z
15 else
16 RIGHT(y)=z
17 LEFT(z)=NIL(T)
18 RIGHT(z)=NIL(T)
19 COLOR(z)=RED
20 RB-INSERT-FIXUP(T,z)
21

 

insert fixup
 1 RB-INSERT-FIXUP(T,z)
2 while(COLOR(P(z))==RED)
3 if(P(z)==LEFT(P(P(z))))
4 y=RIGHT(P(P(z)))
5 if(COLOR(y)==RED)
6 COLOR(y)=BLACK
7 COLOR(P(z))=BLACK
8 COLOR(P(P(z)))=RED
9 z=P(P(z))
10 else if(z=RIGHT(P(z)))
11 z=P(z)
12 LEFT-ROTATE(T,z)
13 COLOR(P(z))=BLACK
14 COLOR(P(P(z)))=RED
15 RIGHT-ROTATE(T,P(P(Z)))
16 else
17 y=LEFT(P(P(z)))
18 if(COLOR(y)==RED)
19 COLOR(y)=BLACK
20 COLOR(P(z))=BLACK
21 COLOR(P(P(z)))=RED
22 z=P(P(z))
23 else if(z=LEFT(P(z)))
24 z=P(z)
25 RIGHT-ROTATE(T,z)
26 COLOR(P(z))=BLACK
27 COLOR(P(P(z)))=RED
28 LEFT-ROTATE(T,P(P(z)))
29 COLOR(Root(T))=BLACK

 

删除

rb delete
 1 RB-DELETE(T,z)
2 if(LEFT(z)=NIL(T) || RIGHT(z)=NIL(T))
3 y=z
4 else
5 y=TREE-SUCCESSOR(z)
6 if(LEFT(y)!=NIL(T))
7 x=LEFT(y)
8 else
9 x=RIGHT(y)
10 P(x)=P(y)
11 if(P(y)==NIL(T))
12 Root(T)=x
13 else if(LEFT(P(y))==y)
14 LEFT(P(y))=x
15 else
16 RIGHT(P(y))=x
17 if(y!=z)
18 KEY(z)=KEY(y)
19 if(color(y)==BLACK)
20 RB-DELETE-FIXUP(T,x)
21 return y





posted @ 2012-02-04 14:28  Cavia  阅读(191)  评论(0编辑  收藏  举报