red-black trees - cs.tulane.edu · red-black trees this data structure requires an extra one-bit...

41
CS 334 Analysis of Algorithms 1 10/11/07 CS 3343 – Fall 2007 Red-black trees Carola Wenk Slides courtesy of Charles Leiserson with small changes by Carola Wenk

Upload: others

Post on 21-Aug-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 110/11/07

CS 3343 – Fall 2007

Red-black treesCarola Wenk

Slides courtesy of Charles Leiserson with small changes by Carola Wenk

Page 2: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 210/11/07

Search Trees

• A binary search tree is a binary tree. Each node stores a key. The tree fulfills the binary search tree property:

For every node x holds: • left(x)≤ x , if x’s left child left(x) exists• x ≤ right(x) , if x’s right child right(x) exists

88 1515

1010

1818

2222

33

77

1212 1717

Page 3: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 310/11/07

Search Trees

Different variants of search trees:

• Balanced search trees (guarantee height of log nfor n elements)

• k-ary search trees (such as B-trees, 2-3-trees)

• Search trees that store the keys only in the leaves, and store additional split-values in the internal nodes

88 1515

1010

1818

2222

33

77

1212 1717

Page 4: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 410/11/07

ADT Dictionary / Dynamic SetAbstract data type (ADT) Dictionary (also called Dynamic Set):A data structure which supports operations• Insert• Delete• FindUsing balanced binary search trees we can implement a dictionary data structure such that each operation takes O(log n) time.

88 15151010

1818

222233

77

1212 1717

Page 5: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 510/11/07

Balanced search treesBalanced search tree: A search-tree data structure for which a height of O(log n) is guaranteed when implementing a dynamic set of n items.

Examples:

• AVL trees• 2-3 trees• 2-3-4 trees• B-trees• Red-black trees

Page 6: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 610/11/07

Red-black treesThis data structure requires an extra one-bit color field in each node.Red-black properties:1. Every node is either red or black.2. The root is black.3. The leaves (NIL’s) are black.4. If a node is red, then both its children are black.5. All simple paths from any node x, excluding x,

to a descendant leaf have the same number of black nodes = black-height(x).

Page 7: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 710/11/07

Example of a red-black tree

h = 4

88 1111

1010

1818

2626

2222

33

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

Page 8: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 810/11/07

Example of a red-black tree

88 1111

1010

1818

2626

2222

33

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

1. Every node is either red or black.

Page 9: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 910/11/07

Example of a red-black tree

88 1111

1010

1818

2626

2222

33

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

2., 3. The root and leaves (NIL’s) are black.

Page 10: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1010/11/07

Example of a red-black tree

88 1111

1010

1818

2626

2222

33

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

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

Page 11: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1110/11/07

Example of a red-black tree

5. All simple paths from any node x, excluding x, to a descendant leaf have the same number of black nodes = black-height(x).

88 1111

1010

1818

2626

2222

33

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

bh = 2

bh = 1

bh = 1

bh = 2

bh = 0

Page 12: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1210/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)INTUITION:• Merge red nodes

into their black parents.

Page 13: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1310/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)INTUITION:• Merge red nodes

into their black parents.

Page 14: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1410/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)INTUITION:• Merge red nodes

into their black parents.

Page 15: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1510/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)INTUITION:• Merge red nodes

into their black parents.

Page 16: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1610/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)INTUITION:• Merge red nodes

into their black parents.

Page 17: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1710/11/07

Height of a red-black tree

Theorem. A red-black tree with n keys has heighth ≤ 2 log(n + 1).

Proof. (The book uses induction. Read carefully.)

• This process produces a tree in which each node has 2, 3, or 4 children.

• The 2-3-4 tree has uniform depth h′ of leaves.

INTUITION:• Merge red nodes

into their black parents.

h′

Page 18: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1810/11/07

Proof (continued)

h′

h

• We haveh′ ≥ h/2, sinceat most halfthe leaves on any path are red.

• The number of leaves in each tree is n + 1⇒ n + 1 ≥ 2h'

⇒ log(n + 1) ≥ h' ≥ h/2⇒ h ≤ 2 log(n + 1).

Page 19: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 1910/11/07

Query operations

Corollary. The queries SEARCH, MIN, MAX, SUCCESSOR, and PREDECESSORall run in O(log n) time on a red-black tree with n nodes.

88 1111

10101818

2626

222233

77

NIL NIL

NIL NIL NIL NIL

NIL

NIL NIL

Page 20: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2010/11/07

Modifying operations

The operations INSERT and DELETE cause modifications to the red-black tree:1. the operation itself,2. color changes,3. restructuring the links of the tree

via “rotations”.

Page 21: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2110/11/07

Rotations

AABB

αα ββγγ

RIGHT-ROTATE(B)

BBAA

γγββαα

LEFT-ROTATE(A)

• Rotations maintain the inorder ordering of keys:a ∈ α, b ∈ β, c ∈ γ ⇒ a ≤ A ≤ b ≤ B ≤ c.

• Rotations maintain the binary search tree property• A rotation can be performed in O(1) time.

Page 22: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2210/11/07

Red-black treesThis data structure requires an extra one-bit color field in each node.Red-black properties:1. Every node is either red or black.2. The root is black.3. The leaves (NIL’s) are black.4. If a node is red, then both its children are black.5. All simple paths from any node x, excluding x,

to a descendant leaf have the same number of black nodes = black-height(x).

Page 23: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2310/11/07

Insertion into a red-black tree

1515

Example:• Insert x =15.

88 1111

1010

1818

2626

2222

77

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 24: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2410/11/07

Insertion into a red-black tree

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.88 1111

1010

1818

2626

2222

77

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 25: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2510/11/07

Insertion into a red-black tree

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.88 1111

1010

1818

2626

2222

77

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 26: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2610/11/07

Insertion into a red-black tree

88 1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 27: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2710/11/07

Insertion into a red-black tree

88

1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 28: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2810/11/07

Insertion into a red-black tree

88

1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).• LEFT-ROTATE(7)

33

IDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

Page 29: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 2910/11/07

Insertion into a red-black treeIDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

88 1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).• LEFT-ROTATE(7)

33

Page 30: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3010/11/07

Insertion into a red-black treeIDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

88 1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).• LEFT-ROTATE(7) and recolor.

33

Page 31: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3110/11/07

Insertion into a red-black treeIDEA: Insert x in tree. Color x red. Only red-black property 4 might be violated. Move the violation up the tree by recoloring until it can be fixed with rotations and recoloring.

88 1111

1010

1818

2626

2222

77

1515

Example:• Insert x =15.• Recolor, moving the

violation up the tree.• RIGHT-ROTATE(18).• LEFT-ROTATE(7) and recolor.

33

Page 32: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3210/11/07

PseudocodeRB-INSERT(T, x)

TREE-INSERT(T, x)color[x] ← RED ⊳ only RB property 4 can be violatedwhile x ≠ root[T] and color[p[x]] = RED

do if p[x] = left[p[p[x]]then y ← right[p[p[x]] ⊳ y = aunt/uncle of x

if color[y] = REDthen ⟨Case 1⟩else if x = right[p[x]]

then ⟨Case 2⟩ ⊳ Case 2 falls into Case 3⟨Case 3⟩

else ⟨“then” clause with “left” and “right” swapped⟩color[root[T]] ← BLACK

Page 33: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3310/11/07

Graphical notation

Let denote a subtree with a black root.

All ’s have the same black-height.

Page 34: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3410/11/07

Case 1

BB

CC

DDAA

xy

(Or, A’s children are swapped.)

BB

CC

DDAA

new x

Push C’s black onto Aand D, and recurse, since C’s parent may be red.

Recolor

p[x] = left[p[p[x]]y = right[p[p[x]]color[y] = RED

Recurse

Page 35: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3510/11/07

Case 2

BB

CC

AA

x

yLEFT-ROTATE(A)

AA

CC

BB

x

y

Transform to Case 3.p[x] = left[p[p[x]]y = right[p[p[x]]

x = right[p[x]]color[y] = BLACK

Page 36: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3610/11/07

RIGHT-ROTATE(C)(and recolor)

Case 3

AA

CC

BB

x

yAA

BB

CC

Done! No more violations of RB property 4 are possible.

p[x] = left[p[p[x]]y = right[p[p[x]]

x = left[p[x]]color[y] = BLACK

Page 37: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3710/11/07

Analysis

• Go up the tree performing Case 1, which only recolors nodes.

• If Case 2 or Case 3 occurs, perform 1 or 2rotations, and terminate.

Running time: O(log n) with O(1) rotations.RB-DELETE — same asymptotic running time and number of rotations as RB-INSERT (see textbook).

Page 38: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3810/11/07

Pseudocode (part II)else ⟨“then” clause with “left” and “right” swapped⟩⊳ p[x] = right[p[p[x]]then y ← left[p[p[x]] ⊳ y = aunt/uncle of x

if color[y] = REDthen ⟨Case 1’⟩else if x = left[p[x]]

then ⟨Case 2’⟩ ⊳ Case 2’ falls into Case 3’⟨Case 3’⟩

color[root[T]] ← BLACK

Page 39: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 3910/11/07

Case 1’

CC

y

(Or, A’s children are swapped.)

Recolor

p[x] = right[p[p[x]]y = left[p[p[x]]color[y] = RED

BB

AA

xDD

Push C’s black onto Aand D, and recurse, since C’s parent may be red.

new xCC

y

BB

AA

xDD

Page 40: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 4010/11/07

Case 2’

CC RIGHT-ROTATE(A)

p[x] = right[p[p[x]]y = left[p[p[x]]

x = left[p[x]]color[y] = BLACK

AAy

BBx

Transform to Case 3’.

CC

AA

y BBx

Page 41: Red-black trees - cs.tulane.edu · Red-black trees This data structure requires an extra one-bit color field in each node. Red-black properties: 1. Every node is either red or black

CS 334 Analysis of Algorithms 4110/11/07

Case 3’

LEFT-ROTATE(C)(and recolor)

AA

BB

CC

Done! No more violations of RB property 4 are possible.

p[x] = right[p[p[x]]y = left[p[p[x]]

x = right[p[x]]color[y] = BLACK

CC

AA

y BBx