![Page 1: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/1.jpg)
Red–black trees
![Page 2: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/2.jpg)
¡ Define the red-‐black tree properties ¡ Describe and implement rotations ¡ Implement red-‐black tree insertion
§ We will skip red-‐black tree deletion
October 2004 John Edgar 2
![Page 3: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/3.jpg)
¡ Items can be inserted in and removed from BSTs in O(height) time
¡ So what is the height of a BST? § If the tree is balanced: O(logn)
§ If the tree is very unbalanced: O(n)
October 2004 John Edgar 3
43
61
24 61
12 37
12
24
43
37
balanced BST
height = O(logn)
unbalanced BST
height = O(n)
![Page 4: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/4.jpg)
¡ Define a balanced binary tree as one where § There is no path from the root to a leaf* that is more than twice as long as any other such path
§ The height of such a tree is O(logn) ¡ Guaranteeing that a BST is balanced requires either
§ A more complex structure (2-‐3 and 2-‐3-‐4 trees) or § More complex insertion and deletion algorithms (red-‐black trees)
October 2004 John Edgar 4
*definition of leaf on next slide
![Page 5: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/5.jpg)
¡ A red-‐black tree is a balanced BST ¡ Each node has an extra colour field which is
§ red or black ▪ Usually represented as a boolean – isBlack
¡ Nodes have an extra pointer to their parent ¡ Imagine that empty nodes are added so that every
real node has two children § They are imaginary nodes so are not allocated space § The imaginary nodes are always coloured black
October 2004 John Edgar 5
![Page 6: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/6.jpg)
1. Every node is either red or black 2. Every leaf is black
§ This refers to the imaginary leaves ▪ i.e. every null child of a node is considered to be a black leaf
3. If a node is red both its children must be black 4. Every path from a node to a leaf contains the same
number of black nodes 5. The root is black (mainly for convenience)
October 2004 John Edgar 6
![Page 7: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/7.jpg)
¡ Perfect trees are perfectly balanced § But they are inflexible, can only store 1, 3, 7, … nodes
¡ “Black” nodes form a perfect tree ¡ “Red” nodes allow flexibility
¡ Draw some pictures
October 2004 John Edgar 7
![Page 8: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/8.jpg)
¡ The black height of a node, bh(v), is the number of black nodes on a path from v to a leaf § Without counting v itself § Because of property 4 every path from a node to a leaf contains the same number of black nodes
¡ The height of a node, h(v), is the number of nodes on the longest path from v to a leaf § Without counting v itself § From property 3 a red node’s children must be black ▪ So h(v) ≤ 2(bh(v))
October 2004 John Edgar 8
![Page 9: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/9.jpg)
¡ It can be shown that a tree with the red-‐black structure is balanced ¡ A balanced tree has no path from the root to a leaf that is
more than twice as long as any other such path ¡ Assume that a tree has n internal nodes
§ An internal node is a non-‐leaf node, and the leaf nodes are imaginary nodes
§ A red-‐black tree has ≥ 2bh – 1 internal (real) nodes ▪ Can be proven by induction (e.g. Algorithms, Cormen et al.)
October 2004 John Edgar 9
![Page 10: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/10.jpg)
¡ Claim: a red-‐black tree has height, h ≤ 2*log(n+1) § n ≥ 2bh – 1 (see above) § bh ≥ h / 2 (red nodes must have black children) § n ≥ 2h/2 – 1 (replace bh with h) § log(n + 1) ≥ h / 2 (add 1, log2 of both sides) § h ≤ 2*log(n + 1) (multiply both sides by 2)
October 2004 John Edgar 10
![Page 11: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/11.jpg)
![Page 12: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/12.jpg)
¡ An item must be inserted into a red-‐black tree at the correct position
¡ The shape of a tree is determined by § The values of the items inserted into the tree § The order in which those values are inserted
¡ This suggests that there is more than one tree (shape) that can contain the same values
¡ A tree’s shape can be altered by rotation while still preserving the bst property § Note: only applies to bst with no duplicate keys!
October 2004 John Edgar 12
![Page 13: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/13.jpg)
October 2004 John Edgar 13
x
y z
A D C B
Left rotate(x)
z
y
A
D
C
B
x
![Page 14: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/14.jpg)
October 2004 John Edgar 14
x
y z
A D C B
z
y
A
D
C
B
Right rotate(z)
x
![Page 15: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/15.jpg)
October 2004 John Edgar 15
Left rotation of 32, call the node x
47
81 32
13 40
37 44
Assign a pointer to x's R child
temp
![Page 16: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/16.jpg)
October 2004 John Edgar 16
47
81 32
13 40
37 44
temp
Make temp’s L child x’s R child
Detach temp’s L child
Left rotation of 32, call the node x
Assign a pointer to x's R child
![Page 17: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/17.jpg)
October 2004 John Edgar 17
47
81 32
13 40
37 44
temp Make x temp's L child
Make temp x's parent's child
Make temp’s L child x’s R child
Detach temp’s L child
Left rotation of 32, call the node x
Assign a pointer to x's R child
![Page 18: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/18.jpg)
October 2004 John Edgar 18
47
81 40
32 44
13 37
Left rotation of 32, call the node x
![Page 19: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/19.jpg)
October 2004 John Edgar 19
47
81 32
13 40
7 29 37
temp
Right rotation of 47, call the node x
Assign a pointer to x's L child
![Page 20: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/20.jpg)
October 2004 John Edgar 20
47
81 32
13 40
7 29 37
Make temp’s R child x’s L child
Detach temp’s R child temp
Right rotation of 47, call the node x
Assign a pointer to x's L child
![Page 21: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/21.jpg)
Right rotation of 47, call the node x
October 2004 John Edgar 21
47
81 32
13 40
7 29 37
Make x temp's L child temp
Make temp’s R child x’s L child
Detach temp’s R child
Assign a pointer to x's L child
![Page 22: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/22.jpg)
October 2004 John Edgar 22
Make temp the new root
temp 47
32
13
7 40 29
37
81
Right rotation of 47, call the node x
Make x temp's L child
Make temp’s R child x’s L child
Detach temp’s R child
Assign a pointer to x's L child
![Page 23: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/23.jpg)
![Page 24: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/24.jpg)
¡ Insert as for a binary search tree § Make the new node red
October 2004 John Edgar 24
![Page 25: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/25.jpg)
October 2004 John Edgar 25
Insert 65 47
71 32
93
![Page 26: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/26.jpg)
October 2004 John Edgar 26
Insert 65 47
71 32
65 93
![Page 27: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/27.jpg)
¡ Insert as for a binary search tree § Make the new node red
¡ What can go wrong? (see slide 6) § The only property that can be violated is that both a red node’s children are black (its parent may be red)
¡ So, after inserting, fix the tree by re-‐colouring nodes and performing rotations
October 2004 John Edgar 27
![Page 28: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/28.jpg)
¡ The fixing of the tree remedies the problem of two consecutive red nodes § There are a number of cases (that’s what is next)
¡ It is iterative (or recursive) and pushes this problem one step up the tree at each step § I.e. if the consecutive red nodes are at level d, at the next step they are at d-‐1
§ This is why it turns out to be O(log n) ▪ We won’t go into the analysis
October 2004 John Edgar 28
![Page 29: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/29.jpg)
¡ Need to fix tree if new node’s parent is red ¡ Case I for fixing: ¡ If parent and uncle are both red
§ Then colour them black § And colour the grandparent red ▪ It must have been black beforehand, why?
October 2004 John Edgar 29
![Page 30: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/30.jpg)
October 2004 John Edgar 30
Insert 65 47
71 32
65 93
Insert 82
![Page 31: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/31.jpg)
October 2004 John Edgar 31
82
47
71 32
65 93
Insert 82
Insert 65
![Page 32: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/32.jpg)
71 71
93 93 65 65
October 2004 John Edgar 32
82
47
32
Insert 82
change nodes’ colours
Insert 65
![Page 33: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/33.jpg)
¡ Need to fix tree if new node’s parent is red ¡ Case II for fixing: ¡ If parent is red but uncle is black
§ Need to do some tree rotations to fix it
October 2004 John Edgar 33
![Page 34: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/34.jpg)
Insert 87
October 2004 John Edgar 34
65 93
71
82
47
32
Insert 82
Insert 65
![Page 35: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/35.jpg)
October 2004 John Edgar 35
93 65
71
82
47
32
87
Insert 87
Insert 82
Insert 65
![Page 36: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/36.jpg)
October 2004 John Edgar 36
93 65
71
82
47
32
87
Insert 87
Insert 82
Insert 65
![Page 37: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/37.jpg)
October 2004 John Edgar 37
93 65
71
87
47
32
82
Insert 87
Insert 82
Insert 65
![Page 38: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/38.jpg)
93 93
87 87
October 2004 John Edgar 38
65
47
32
82
71
change nodes’ colours
Insert 87
Insert 82
Insert 65
![Page 39: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/39.jpg)
October 2004 John Edgar 39
87
93
65
47
32
82
71 Insert 87
Insert 82
Insert 65
![Page 40: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/40.jpg)
¡ Why were these rotations performed? ¡ First rotation made the two red nodes left children of their parents § This rotation isn’t performed if this is already the case
§ Note that grandparent must be a black node ¡ Second rotation and subsequent recolouring fixes the tree
October 2004 John Edgar 40
![Page 41: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/41.jpg)
¡ Full details require a few cases § See link to example code snippets at end § Understand the application of tree rotations
October 2004 John Edgar 41
![Page 42: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/42.jpg)
![Page 43: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/43.jpg)
¡ Red-‐black trees are balanced binary search trees
¡ Augment each node with a colour § Maintaining relationships between node colours maintains balance of tree
¡ Important operation to understand: rotation § Modify tree but keep binary search tree property (ordering of nodes)
October 2004 John Edgar 43
![Page 44: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!](https://reader035.vdocuments.mx/reader035/viewer/2022063013/5fcae1fab16fb1055e433df2/html5/thumbnails/44.jpg)
¡ For implementation details, please see: http://en.wikipedia.org/wiki/Red-‐black_tree
(see “Operations”)
October 2004 John Edgar 44