Here's an example of insertion into a red-black tree.
 | Here's the original tree ..
Note that in the following diagrams, the black sentinel nodes have been omitted to keep the diagrams simple. |
 | The tree insert routine has just been called to insert node "4" into the tree. This is no longer a red-black tree - there are two successive red nodes on the path
11 - 2 - 7 - 5 - 4
Mark the new node, x, and it's uncle, y.
y is red, so we have case 1 ... |
 | Change the colours of nodes 5, 7 and 8. |
 | Move x up to its grandparent, 7. x's parent (2) is still red, so this isn't a red-black tree yet.
Mark the uncle, y.
In this case, the uncle is black, so we have case 2 ... |
 | Move x up and rotate left. |
 | Still not a red-black tree .. the uncle is black, but x's parent is to the left .. |
 | Change the colours of 7 and 11 and rotate right .. |
 | This is now a red-black tree, so we're finished! O(logn) time! |