1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture...

38
1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees

Transcript of 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture...

Page 1: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

1

Unbalanced binary search trees Balanced search trees

2-3-4 trees Red-black trees

CSE 30331Lecture 17 – Balanced trees

Page 2: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

2

Unbalanced Binary Search Tree and balanced alternatives

B in ary Search T ree (a)

5 0

7 8

7 5

8 0

7 0

9 0

6 0

R ed -B lack T ree (b )

7 8

8 07 05 0

9 06 0

7 5

8 07 5

7 85 0

9 06 0

7 0

A VL T ree (c)

1 0 01 0 0

1 0 0

Page 3: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

3

Two Binary Search Tree Examples

Insertion sequence for tree (a): 5, 15, 20, 3, 9, 7, 12, 17, 6, 75, 100, 18, 25, 35, 40

5

18

35

25

17 75

6

127

209

153

40

5

18

35

25

17

75

6 12

7

20

9

153

40

Depth = 6Average comparisons per search = 4.0

Depth = 4Average comparisons per search = 3.47

(a) unbalanced (b) Same data, but more balanced

100

100

Page 4: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

4

What is a 2-3-4 Tree?

Each node has 1, 2 or 3 values Each node has 2, 3 or 4 children The tree is ALWAYS perfectly balanced

Depth of all subtrees of a node are equal

Page 5: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

5

2-3-4 Tree Example

2 1 5 3 5 5 5

1 2

2 54 8 1 0

1 15 7 9

Page 6: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

6

2-3-4 Tree (node types)

A

2-node

(value < A) (value > A)

A B

3-node

A < B

(value < A) (A < value < B) (value > B)

A B C

4-node

A < B < C

(value < A) (A < value < B) (value > C)(B < value < C)

Page 7: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

7

2-3-4 Tree InsertionSplits 4-nodes top-down

3 6 9

2 4 108

Inserting 7 requires splitting of the 4-node before adding 7 as a child (leaf or part of existing leaf)

93

6

2 107 84

After splitting, 7 is added to a leaf following normal search tree order

Page 8: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

8

2-3-4 Tree Insertion Details 4-nodes must be split on the way down Split involves “promotion” of middle value into parent

node New value is always added to existing 2-node or 3-

node LEAF

2-3-4 tree is always perfectly balanced Implementation is wasteful of space

Each node must have space for 3 values, 1 parent pointer and 4 child pointers, even if not always used

There is always an equivalent red-black binary tree

Page 9: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

9

Building 2-3-4 Tree by Series of Insertions

2 1 2 1 52 2 1 5

In s ert 2 In s ert 1 2In s ert 1 5

1 52

1 2

Sp lit 4 -n o d e (2 , 1 2 , 1 5 )

1 5

1 2

2 4

In s ert 4

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7

To insert 4, first split the root (a 4-node) and then add value to leaf

Page 10: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

10

Building 2-3-4 Tree by Series of Insertions

1 5

1 2

2 4 8

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7

2

4 1 2

1 58 2

4 1 2

1 58 1 0

Sp lit 4 -n o d e (2 , 4 , 8 ) In s ert 1 0

Insert 8

To insert 10, first split the root (a 4-node) and then add value to leaf

Page 11: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

11

Building 2-3-4 Tree by Series of Insertions

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7

2

4 12

8 10 15 25

Insert 25

2

4 12

15 25 358 10

Insert 35

2

4 12 25

8 10 15 35 2

4 12 25

8 10 15 35 55

Insert 55Split 4-node (15, 25, 35)

To insert 55, first split the leaf (a 4-node) and then add value to leaf

Page 12: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

12

Building 2-3-4 Tree by Series of Insertions

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7 To insert 11, again requires top-down split of each 4-node

encountered, so root is split and new value is inserted in leaf

2 8 10 15 35 55

254

12

Split 4-node (4, 12, 25)

2 8 10 11 15 35 55

254

12

Insert 11

Page 13: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

13

Building 2-3-4 Tree by Series of Insertions

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7 To insert 9, split the leaf (a 4-node) and insert new value

2 15 35 55

25

12

4 10

118

Split 4-node (8, 10, 11)

2 15 35 55

25

12

4 10

118 9

Insert 9

Page 14: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

14

Building 2-3-4 Tree by Series of Insertions

Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7

2 15 35 55

25

12

4 10

115 8 9

Insert 5

2 15 35 55

25

12

4 8 10

1195

Split 4-node (5, 8, 9)

2 15 35 55

25

12

4 8 10

1195 7

And finally insert 7 in a leaf

Page 15: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

15

Inefficiencies

2-3-4 trees require space for up to ... 3 values in every node Pointers to 4 children from every node

Even if they are not used in all cases So, we can use a Red Black tree instead

A (colored) form of binary search tree Always relatively balanced Nodes have no more storage required than

normal binary search tree

Page 16: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

16

Red Black Tree Properties

The root is always BLACK

A RED parent never has a RED child

Every path from ROOT to an EMPTY subtree has the same black height (# of BLACK nodes)

Black Height of tree is O(log2n)

Page 17: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

17

Red Black Tree Node Types BLACK parent with two RED children is the

equivalent of a 4-node

A 4-node split is accomplished by flipping the colors to RED parent & two BLACK children, with possible rotation if colors conflict

BLACK parent with single RED child is equivalent of a 3-node

New nodes are always inserted a RED leaves

Page 18: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

18

Red-Black subtree equivalents of 2-3-4 tree nodes

B

CA

A B C

S T U VS T

R ep res en t at io n w it h a b lackp aren t an d t w o red ch ild ren

4 -n o d e (A , B , C )in a 2 -3 -4 T ree

U V

A B

ST

U

3 -n o d e (A , B )in a 2 -3 -4 T ree

A

BS

R ep res en t at io n w it h a b lackp aren t an d a red righ t ch ild

T U

B

A

S T

R ep res en t at io n w it h a b lackp aren t an d a red left ch ild

U

Page 19: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

19

Converting a 2-3-4 Tree to Red-Black Tree (top-down)

1 2 1 5

8 1 0 2 0

9 3 0 4 01 3 4

1 2 1 59 3 0 4 01 3 4

1 0

8 2 0

First, convert the root

(note: shaded nodes are RED)

Original

Page 20: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

20

Converting a 2-3-4 Tree to Red-Black Tree (top-down)

1 2 1 59 3 0 4 01 3 4

1 0

8 2 0

1 2 1 5 3 0 4 0

1 0

8 2 0

3 9

1 4

1 0

8 2 0

3 9

1 4 3 0

1 2 4 0

1 5

Then convert the right subtree and we’re done

Next, convert left subtree

Page 21: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

21

Building red black tree by repeated insertions

Insert root and color it BLACK Each successive insertion point is found in normal

search tree order Any 4-nodes (black parent with two red children) is

split going down into tree Requires color changes and possible rotations of subtrees

New value is added as RED leaf If result is RED child of RED parent, then rotations

are required to correct

Page 22: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

22

Situations in the Splitting of a 4-Node (A X B)

P a r e n t P is B L A C KX is a le f t - c h ild

X

A B

P

C

P a r e n t P is R E D X is a r igh t - c h ild

P a r e n t P is R E D X is a le f t - c h ild

X

A B

P

C

P a r e n t P is B L A C KX is a r igh t - c h ild

X

A B

P

C X

A B

P

C

Page 23: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

23

Required actions to split a 4-node (A X B) with parent P & grandparent G

4-node is either child of black parent Flip subtree colors ONLY (X red, A & B black)

4-node is child of red parent (left-left) Flip subtree colors, single right rotation about P & recolor

4-node is child of red parent (right-right) Flip subtree colors, single left rotation about P & recolor

4-node is child of red parent (left-right) Flip subtree colors, then double rotation (first left, then

right) about X & then color X black, G & P red 4-node is child of red parent (right-left)

Flip subtree colors, then double rotation (first right, then left) about X & then color X black, G & P red

Page 24: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

24

Left child of a Black parent P:Split requires only a Color Flip

2 - 3 - 4 t r e e v ie wR e d- bla c k t r e e

be f o r e t h e c o lo r f lip

A X B

P

C X P

BA

C

X

A B

P

C

R e d- bla c k t r e ea f t e r t h e c o lo r f lip 2 - 3 - 4 t r e e v ie w

X

A B

P

C

Page 25: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

25

Example split prior to inserting 55: flip colors (40,50,60) & insert leaf

2 -3 -4 t ree v iew

5 0

4 0 6 0

3 0

2 04 0 5 0 6 0 5 0

4 0 6 0

3 0

2 0

5 5

5 5 6 0

2 0 3 0 5 0

2 -3 -4 t ree v iew

4 -n o d eb efo re co lo r-fl ip

4 -n o d e after co lo r-fl ipan d in s ert io n o f 5 5

2 0 3 0

C D

C D C D

C D 4 0

Page 26: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

26

Required actions to split a 4-node (A X B) with parent P & grandparent G

4-node is either child of black parent Flip subtree colors ONLY (X red, A & B black)

4-node is child of red parent (left-left) Flip subtree colors, single right rotation about P & recolor

4-node is child of red parent (right-right) Flip subtree colors, single left rotation about P & recolor

4-node is child of red parent (left-right) Flip subtree colors, then double rotation (first left, then

right) about X & then color X black, G & P red 4-node is child of red parent (right-left)

Flip subtree colors, then double rotation (first right, then left) about X & then color X black, G & P red

Page 27: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

27

RED parent, 4-node oriented left-left from G (grandparent)

S in g le rig h t ro tat io n w i thp iv o t P an d co lo r ch an g es 2 -3 -4 - t ree v iew

2 -3 -4 t ree v iew R ed -b lack t reeb efo re co lo r fl ip

R ed -b lack t reeafter co lo r fl ip

P G

A X B C D

G

BA

X

P

C

D

G

BA

X

P

C

D

G

BA

X

P

C D

X P G

A B C D

Page 28: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

28

Required actions to split a 4-node (A X B) with parent P & grandparent G

4-node is either child of black parent Flip subtree colors ONLY (X red, A & B black)

4-node is child of red parent (left-left) Flip subtree colors, single right rotation about P & recolor

4-node is child of red parent (right-right) Flip subtree colors, single left rotation about P & recolor

4-node is child of red parent (left-right) Flip subtree colors, then double rotation (first left, then

right) about X & then color X black, G & P red 4-node is child of red parent (right-left)

Flip subtree colors, then double rotation (first right, then left) about X & then color X black, G & P red

Page 29: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

29

Red Parent : Oriented Left-Right From G

P G

A X B

BA

X

G

P

C

DCD

BA

X

G

P

C

D

2 -3 -4 t ree v iew R ed -b lack t reeb efo re co lo r flip

R ed -b lack t reeaft er co lo r flip

Page 30: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

30

Red Parent : Oriented Left-Right From G

B

A

X

G

P

C

D

Red-black tree after first (left) rotation (about X)

BA

X

G

P

C

D

Red-black treeafter color flip

Page 31: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

31

Red Parent : Oriented Left-Right From G

B

A

X

G

P

C

D

Red-black tree after first (left) rotation (about X)

After second (right) rotation about X and coloring X black, G & P red

BA

G

X

P

C D

Page 32: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

32

Building A Red-Black Tree Insertions: 2, 15, 12, 4, 8, 10, 25, 35

2 2

In s ert 2m ak e ro o tB L A C K

R ed -B lack T ree 2 - 3 - 4 T r e e

2 2

R e d- B la c k T r e e

B L A C K

2 1 2 1 51 5

22 -3 -4 T ree

R ed -B lack T ree

1 2

A B

C

DX

G

1 52

1 2

C A B D

D o u b le l eftro tat io n

P

2 4

2 -3 -4 T reeR ed -B lack T ree

1 2

1 51 52

1 2

41 52

1 2

1 52

1 2

C o lo r F l ip

1 52

1 2

M ak e ro o tB L A C K

In s ert 4

4

Page 33: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

33

Building A Red-Black Tree Insertions: 2, 15, 12, 4, 8, 10, 25, 35

2 4 8

1 54

2 -3 -4 T reeR ed -B lack T ree

1 21 2

1 582

1 54

2 -3 -4 T ree

R ed -B lack T ree

1 2

1 5

82

4 1 2

2 8 1 0

1 54

1 2

82

1 54

1 2

82

1 0

C o lo r fl ip In s ert 1 0

8

1 5

1 2

82

1 2

82

2 5

2 -3 -4 T reeR ed -B lack T ree

4 1 2

2 8 1 0

4

1 0

1 5 2 52 5

In s ert 2 5

2 -3 -4 T reeR ed -B lack T ree

4 1 2

2 8 1 01 5

4

2

1 0

1 5 2 5 3 53 5

In s ert 3 5

Page 34: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

34

Example on blackboard

Insert: 2, 12, 15, 7, 5, 8, 10

Page 35: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

35

Deleting nodes from a Red-Black Tree

If node has 2 children Swap value with that of inorder successor and Delete the successor node (it has at most 1 child)

If node has 1 or 0 children If it is RED

Delete it and replace with its BLACK child If it is BLACK and its child is RED

Delete it, replace with its RED child and recolor it BLACK If it is BLACK and its child is BLACK

Yikes!!!!

Page 36: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

36

Deleting nodes from a Red-Black Tree

If node has 1 or 0 children If it is BLACK and its child is BLACK

Delete the node and replace with its child BUT ... Now we have a situation. We have removed a BLACK

node from some paths and thus the BLACK height may differ in this part of the tree from others

If the node deleted was the root, we are done All paths are shorter by 1 black node

If not the root, then there are 5 other cases These involve bottom-up rebalancing of the tree using

recoloring and various rotations See http://en.wikipedia.org/wiki/Red-black_tree

Page 37: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

37

Representing a Red-Black Tree

3 5

8 02 5

R ed -B lack T ree rb n o d e R ep res en t at io n o f R ed -B lack T ree

2 5 R E D 8 0 R E D

5 0 B L A C K

The rbNode class from Ford & Topp

Page 38: 1 Unbalanced binary search trees Balanced search trees 2-3-4 trees Red-black trees CSE 30331 Lecture 17 – Balanced trees.

38

Summary

2-3-4 tree Each node has either …

1 value and 2 children 2 values and 3 children 3 values and 4 children

Construction of 2-3-4 trees is complex, so we build an equivalent binary tree known as a red-black tree