以下是红黑树插入的伪代码:
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