red-black trees · red-black tree 12 5 18 2 9 15 19 4 13 17 red-black-tree property 1. every node...

94
Red-Black Trees Antonio Carzaniga Faculty of Informatics Università della Svizzera italiana April 28, 2020

Upload: others

Post on 22-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Trees

Antonio Carzaniga

Faculty of InformaticsUniversità della Svizzera italiana

April 28, 2020

Page 2: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Outline

Red-black trees

Page 3: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Summary on Binary Search Trees

Binary search trees

embody the divide-and-conquer search strategy

SEARCH, INSERT,MIN, andMAX are O(h), where h is the height of the tree

in general, h(n) = Ω(log n) and h(n) = O(n)

randomization can make the worst-case scenario h(n) = n highly unlikely

Page 4: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Summary on Binary Search Trees

Binary search trees

embody the divide-and-conquer search strategy

SEARCH, INSERT,MIN, andMAX are O(h), where h is the height of the tree

in general, h(n) = Ω(log n) and h(n) = O(n)

randomization can make the worst-case scenario h(n) = n highly unlikely

Problem

worst-case scenario is unlikely but still possible

simply bad cases are even more probable

Page 5: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

Page 6: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Page 7: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Page 8: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Page 9: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

Page 10: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

1. every node is either red or black

Page 11: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

1. every node is either red or black

2. the root is black

Page 12: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

Page 13: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

4. if a node is red, then both its children are black

Page 14: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree

12

5 18

2 9 15 19

4 13 17

Red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

4. if a node is red, then both its children are black

5. for every node x, each path from x to its descendant leaves has the same numberof black nodes bh(x) (the black-height of x)

Page 15: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (2)

Implementation12

5 18

2 9 15 19

4 13 17

Page 16: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (2)

Implementation12

5 18

2 9 15 19

4 13 17

we use a common “sentinel” node to represent leaf nodes

Page 17: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (2)

Implementation12

5 18

2 9 15 19

4 13 17

we use a common “sentinel” node to represent leaf nodes

the sentinel is also the parent of the root node

Page 18: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (3)

Implementation

T represents the tree, which consists of a set of nodes

Page 19: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (3)

Implementation

T represents the tree, which consists of a set of nodes

T . root is the root node of tree T

Page 20: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (3)

Implementation

T represents the tree, which consists of a set of nodes

T . root is the root node of tree T

T .nil is the “sentinel” node of tree T

Page 21: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (3)

Implementation

T represents the tree, which consists of a set of nodes

T . root is the root node of tree T

T .nil is the “sentinel” node of tree T

Nodes

x.parent is the parent of node x

x.key is the key stored in node x

x. left is the left child of node x

x. right is the right child of node x

k k = x.keynode x

x.parent

x. left x.right

Page 22: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Tree (3)

Implementation

T represents the tree, which consists of a set of nodes

T . root is the root node of tree T

T .nil is the “sentinel” node of tree T

Nodes

x.parent is the parent of node x

x.key is the key stored in node x

x. left is the left child of node x

x. right is the right child of node x

x.color ∈ RED, BLACK is the color of node x

k k = x.keynode x

x.parent

x. left x.right

Page 23: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Page 24: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).

Page 25: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

Page 26: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

1.2 induction step: consider y1, y2, and x such that y1.parent = y2.parent = x, and

assume (induction) that size(y1) ≥ 2bh(y1) − 1 and size(y2) ≥ 2bh(y2) − 1;

prove that size(x) ≥ 2bh(x) − 1

Page 27: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

1.2 induction step: consider y1, y2, and x such that y1.parent = y2.parent = x, and

assume (induction) that size(y1) ≥ 2bh(y1) − 1 and size(y2) ≥ 2bh(y2) − 1;

prove that size(x) ≥ 2bh(x) − 1proof:

size(x) = size(y1) + size(y2) + 1 ≥ (2bh(y1) − 1) + (2bh(y2) − 1) + 1

Page 28: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

1.2 induction step: consider y1, y2, and x such that y1.parent = y2.parent = x, and

assume (induction) that size(y1) ≥ 2bh(y1) − 1 and size(y2) ≥ 2bh(y2) − 1;

prove that size(x) ≥ 2bh(x) − 1proof:

size(x) = size(y1) + size(y2) + 1 ≥ (2bh(y1) − 1) + (2bh(y2) − 1) + 1since

bh(x) =

bh(y) if color(y) = RED

bh(y) + 1 if color(y) = BLACK

Page 29: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

1.2 induction step: consider y1, y2, and x such that y1.parent = y2.parent = x, and

assume (induction) that size(y1) ≥ 2bh(y1) − 1 and size(y2) ≥ 2bh(y2) − 1;

prove that size(x) ≥ 2bh(x) − 1proof:

size(x) = size(y1) + size(y2) + 1 ≥ (2bh(y1) − 1) + (2bh(y2) − 1) + 1since

bh(x) =

bh(y) if color(y) = RED

bh(y) + 1 if color(y) = BLACK

size(x) ≥ (2bh(x)−1 − 1) + (2bh(x)−1 − 1) + 1

Page 30: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree

Lemma: the height h(x) of a red-black tree with n = size(x) internal nodes is at most2 log(n + 1).Proof:

1. prove that [x : size(x) ≥ 2bh(x) − 1 by induction:

1.1 base case: x is a leaf, so size(x) = 0 and bh(x) = 0

1.2 induction step: consider y1, y2, and x such that y1.parent = y2.parent = x, and

assume (induction) that size(y1) ≥ 2bh(y1) − 1 and size(y2) ≥ 2bh(y2) − 1;

prove that size(x) ≥ 2bh(x) − 1proof:

size(x) = size(y1) + size(y2) + 1 ≥ (2bh(y1) − 1) + (2bh(y2) − 1) + 1since

bh(x) =

bh(y) if color(y) = RED

bh(y) + 1 if color(y) = BLACK

size(x) ≥ (2bh(x)−1 − 1) + (2bh(x)−1 − 1) + 1 = 2bh(x) − 1

Page 31: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

Page 32: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

2. Since every red node has black children, in every path from x to a leaf node, atleast half the nodes are black

Page 33: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

2. Since every red node has black children, in every path from x to a leaf node, atleast half the nodes are black, thus bh(x) ≥ h(x)/2

Page 34: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

2. Since every red node has black children, in every path from x to a leaf node, atleast half the nodes are black, thus bh(x) ≥ h(x)/2

3. From steps 1 and 2, n = size(x) ≥ 2h(x)/2 − 1

Page 35: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

2. Since every red node has black children, in every path from x to a leaf node, atleast half the nodes are black, thus bh(x) ≥ h(x)/2

3. From steps 1 and 2, n = size(x) ≥ 2h(x)/2 − 1, therefore

h ≤ 2 log(n + 1)

Page 36: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Height of a Red-Black Tree (2)

1. size(x) ≥ 2bh(x) − 1

2. Since every red node has black children, in every path from x to a leaf node, atleast half the nodes are black, thus bh(x) ≥ h(x)/2

3. From steps 1 and 2, n = size(x) ≥ 2h(x)/2 − 1, therefore

h ≤ 2 log(n + 1)

A red-black tree works as a binary search tree for search, etc.

So, the complexity of those operations is T(n) = O(h), that is

T(n) = O(log n)

which is also the worst-case complexity

Page 37: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Rotation

x

d

b

a c e

Page 38: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Rotation

x

d

b

a c e

Page 39: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Rotation

x

d

b

a c e

x = RIGHT-ROTATE(x)

Page 40: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Rotation

x

d

b

a c e

x = RIGHT-ROTATE(x)

x = LEFT-ROTATE(x)

Page 41: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion

RB-INSERT(T, z) works as in a binary search tree

Page 42: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion

RB-INSERT(T, z) works as in a binary search tree

Except that it must preserve the red-black-tree property

Page 43: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion

RB-INSERT(T, z) works as in a binary search tree

Except that it must preserve the red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

4. if a node is red, then both its children are black

5. for every node x, each path from x to its descendant leaves has the same numberof black nodes bh(x) (the black-height of x)

Page 44: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion

RB-INSERT(T, z) works as in a binary search tree

Except that it must preserve the red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

4. if a node is red, then both its children are black

5. for every node x, each path from x to its descendant leaves has the same numberof black nodes bh(x) (the black-height of x)

General strategy

Page 45: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion

RB-INSERT(T, z) works as in a binary search tree

Except that it must preserve the red-black-tree property

1. every node is either red or black

2. the root is black

3. every (NIL) leaf is black

4. if a node is red, then both its children are black

5. for every node x, each path from x to its descendant leaves has the same numberof black nodes bh(x) (the black-height of x)

General strategy

1. insert z as in a binary search tree

2. color z red so as to preserve property 5

3. fix the tree to correct possible violations of property 4

Page 46: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

RB-INSERT

RB-INSERT(T, z)

1 y = T .nil2 x = T . root3 while x , T .nil4 y = x5 if z.key < x.key6 x = x. left7 else x = x. right8 z.parent = y9 if y == T .nil10 T . root = z11 else if z.key < y.key12 y. left = z13 else y. right = z14 z. left = z. right = T .nil15 z.color = RED

16 RB-INSERT-FIXUP(T, z)

Page 47: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (2)

31

15 48

2 20 41 50

7 35 45

25

Page 48: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (2)

31

15 48

2 20 41 50

7 35 45

25

Page 49: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (2)

31

15 48

2 20 41 50

7 35 45

25

Page 50: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (2)

31

15 48

2 20 41 50

7 35 4525

Page 51: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (2)

31

15 48

2 20 41 50

7 35 4525

z’s parent is black, so no fixup needed

Page 52: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

Page 53: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 54: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 55: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 56: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 57: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 58: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

Page 59: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 60: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 61: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 62: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 63: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 64: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 65: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 66: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 67: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

Page 68: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

A black node can become red and transfer its black color to its two children

Page 69: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

A black node can become red and transfer its black color to its two children

This may cause other red–red conflicts, so we iterate. . .

Page 70: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (3)

31

15 48

2 20 41 50

7 35 45

36

z’s parent’s sibling is red

A black node can become red and transfer its black color to its two children

This may cause other red–red conflicts, so we iterate. . .

The root can change to black without causing conflicts

Page 71: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

Page 72: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 73: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 74: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 75: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 76: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 77: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

Page 78: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2 20 41 50

7 35 45

9

z’s parent’s sibling is black

Page 79: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2

20 41 507

35 459 z’s parent’s sibling is black

Page 80: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2

20 41 507

35 459 z’s parent’s sibling is black

Page 81: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (4)

36

31

15 48

2

20 41 507

35 459 z’s parent’s sibling is black

An in-line red–red conflicts can be resolved with a rotation plus a color switch

Page 82: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

2

7

Page 83: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

2

7

Page 84: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

2

7

Page 85: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

2

7

Page 86: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

52

7

Page 87: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

2

7

Page 88: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

2

7

Page 89: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45

5

z’s parent’s sibling is black

2

7

Page 90: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45 z’s parent’s sibling is black5

2

7

Page 91: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45 z’s parent’s sibling is black5

2

7

Page 92: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45 z’s parent’s sibling is black

5

2 7

Page 93: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45 z’s parent’s sibling is black

5

2 7

Page 94: Red-Black Trees · Red-Black Tree 12 5 18 2 9 15 19 4 13 17 Red-black-tree property 1. every node is either red or black 2. the root is black 3. every (NIL) leaf is black 4. if a

Red-Black Insertion (5)

36

31

15 48

20 41 50

35 45 z’s parent’s sibling is black

5

2 7

A zig-zag red–red conflicts can be resolved with a rotation to turn it into anin-line conflict, and then a rotation plus a color switch