red-black trees - carleton universitysbtajali/2002/slides/09-4 redblacktrees.pdf · from (2,4) to...

15
Red-Black Trees 1 © 2004 Goodrich, Tamassia Red-Black Trees 6 3 8 4 v z

Upload: others

Post on 21-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 1© 2004 Goodrich, Tamassia

Red-Black Trees

6

3 8

4

v

z

Page 2: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 2© 2004 Goodrich, Tamassia

Recall: Representing general trees as binary trees

A

B D

F

Supplementary:

C

EC

A

B

DF

CE

C

Left child pointer points to a child node, right child pointer points to a sibling node

Page 3: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 3© 2004 Goodrich, Tamassia

From (2,4) to Red-Black TreesA red-black tree is a representation of a (2,4) tree by means of a binary tree whose nodes are colored red or blackIn comparison with its associated (2,4) tree, a red-black tree hasn same logarithmic time performancen simpler implementation with a single node type

2 6 73 54

4 6

2 7

5

3

3

5OR

Page 4: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 4© 2004 Goodrich, Tamassia

Red-Black Trees (§ 9.5)A red-black tree can also be defined as a binary search tree that satisfies the following properties:n Root Property: the root is blackn External Property: every leaf is blackn Internal Property: the children of a red node are blackn Depth Property: all the leaves have the same black depth

9

154

62 12

7

21

Page 5: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 5© 2004 Goodrich, Tamassia

Height of a Red-Black TreeTheorem: A red-black tree storing n entries has height O(log n)Proof:n The height of a red-black tree is at most twice the height of

its associated (2,4) tree, which is O(log n)

The search algorithm for a binary search tree is the same as that for a binary search treeBy the above theorem, searching in a red-black tree takes O(log n) time

Page 6: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 6© 2004 Goodrich, Tamassia

InsertionTo perform operation insert(k, o), we execute the insertion algorithm for binary search trees and color red the newly inserted node z unless it is the rootn We preserve the root, external, and depth propertiesn If the parent v of z is black, we also preserve the internal property and

we are done n Else (v is red ) we have a double red (i.e., a violation of the internal

property), which requires a reorganization of the treeExample where the insertion of 4 causes a double red:

6

3 8

6

3 8

4z

v v

z

Page 7: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 7© 2004 Goodrich, Tamassia

Remedying a Double RedConsider a double red with child z and parent v, and let w be the sibling of v

4

6

7z

vw2

4 6 7

.. 2 ..

Case 1: w is blackn The double red is an incorrect

replacement of a 4-noden Restructuring: we change the

4-node replacement

Case 2: w is redn The double red corresponds

to an overflown Recoloring: we perform the

equivalent of a split

4

6

7z

v

2 4 6 7

2w

Page 8: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 8© 2004 Goodrich, Tamassia

RestructuringA restructuring remedies a child-parent double red when the parent red node has a black siblingIt is equivalent to restoring the correct replacement of a 4-nodeThe internal property is restored and the other properties are preserved

4

6

7z

vw2

4 6 7

.. 2 ..

4

6

7

z

v

w2

4 6 7

.. 2 ..

ba cba

c

aa bb cc

Supplementary:a, b, c

Page 9: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 9© 2004 Goodrich, Tamassia

Restructuring (cont.)There are four restructuring configurations depending on whether the double red nodes are left or right children

2

4

6

6

2

4

6

4

2

2

6

4

2 6

4

Supplementary:a, b, c, d

ba c d

b

a

c

db

a

c

d

ba

cd

ba

c d

Page 10: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 10© 2004 Goodrich, Tamassia

RecoloringA recoloring remedies a child-parent double red when the parent red node has a red siblingThe parent v and its sibling w become black and the grandparent ubecomes red, unless it is the rootIt is equivalent to performing a split on a 5-nodeThe double red violation may propagate to the grandparent u

4

6

7z

v

2 4 6 7

2w 4

6

7z

v

6 7

2w

… 4 …

2

Page 11: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 11© 2004 Goodrich, Tamassia

Analysis of InsertionRecall that a red-black tree has O(log n) heightStep 1 takes O(log n) time because we visit O(log n)nodesStep 2 takes O(1) timeStep 3 takes O(log n) time because we performn O(log n) recolorings, each

taking O(1) time, andn at most one restructuring

taking O(1) time

Thus, an insertion in a red-black tree takes O(log n) time

Algorithm insert(k, o)

1. We search for key k to locate the insertion node z

2. We add the new entry (k, o) at node z and color z red

3. while doubleRed(z)if isBlack(sibling(parent(z)))

z ← restructure(z)return

else { sibling(parent(z) is red }z ← recolor(z)

Page 12: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 12© 2004 Goodrich, Tamassia

DeletionTo perform operation remove(k), we first execute the deletion algorithm for binary search treesLet v be the internal node removed, w the external node removed, and r the sibling of wn If either v of r was red, we color r black and we are donen Else (v and r were both black) we color r double black, which is a

violation of the internal property requiring a reorganization of the tree

Example where the deletion of 8 causes a double black:

6

3 8

4

v

r w

6

3

4

r

Page 13: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 13© 2004 Goodrich, Tamassia

Remedying a Double BlackThe algorithm for remedying a double black node w with sibling y considers three casesCase 1: y is black and has a red childn We perform a restructuring, equivalent to a transfer , and we are

doneCase 2: y is black and its children are both blackn We perform a recoloring, equivalent to a fusion, which may

propagate up the double black violationCase 3: y is redn We perform an adjustment, equivalent to choosing a different

representation of a 3-node, after which either Case 1 or Case 2 applies

Deletion in a red-black tree takes O(log n) time

Page 14: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 14© 2004 Goodrich, Tamassia

Red-Black Tree Reorganizationremedy double redInsertion

double red removed or propagated up

splitrecoloring

double red removedchange of 4-node representationrestructuring

result(2,4) tree actionRed-black tree action

remedy double blackDeletion

restructuring or recoloring follows

change of 3-node representation

adjustment

double black removed or propagated upfusionrecoloring

double black removedtransferrestructuring

result(2,4) tree actionRed-black tree action

Page 15: Red-Black Trees - Carleton Universitysbtajali/2002/slides/09-4 RedBlackTrees.pdf · From (2,4) to Red-Black Trees A red-black tree is a representation of a (2,4) tree by means of

Red-Black Trees 15© 2004 Goodrich, Tamassia

Why Red-Black trees if we already have AVL-trees and 2-4 trees?

Red-Black trees, AVL trees and 2-4 trees all assure logarithmic height and search time

AVL trees may require a logarithmic number of rotations or “pointer dances” per insertion or deletion.

2-4 trees my require a logarithmic number of split or merge operations per insertion or deletion

Red-Black trees get away with only a constant number of restructures, or adjustments (“pointer dances”) per insertion ordeletion and a logarithmic number of recolorings which are much simpler

java.util uses red-black trees for its tree-based containers

Supplementaryslide