summary' - university of...

18
Data Structures and Algorithms Discussion 6: Week of Oct 10, 2011 Summary 2)3 Trees 2)3)4 Trees Red)black Trees 2)3 Trees Balanced tree Not a binary tree Each node has either 1 value and 2 children 2 values and 3 children 2 Nodes 10 6 14 All elements to the le@ are less than top element All elements to the right are greater than top element

Upload: others

Post on 20-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Data Structures and Algorithms

Discussion 6: Week of Oct 10, 2011

Summary'

•  2)3'Trees'•  2)3)4'Trees'•  Red)black'Trees'

2)3'Trees'

•  Balanced'tree'•  Not'a'binary'tree'•  Each'node'has'either''

– 1'value'and'2'children'– 2'values'and'3'children'

2'Nodes'

10

6 14

•  All'elements'to'the'le@'are'less'than'top'element''

•  All'elements'to'the'right'are'greater'than'top'element'

Page 2: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

3'Nodes'

10 15

6 14

•  All'elements'to'the'le@'are'less'than'first'element''

•  All'elements'in'the'middle'are'between'the'two'top'elements'

•  All'elements'to'the'right'are'greater'than'second'element''

17

InserFng'Elements'

•  Find'leaf'node'to'insert'into.'•  If'leaf'node'is'a'2)node,'just'add'element'

10

6 14

Add 13 10

6 13 14

InserFng'Elements'

•  If'leaf'node'to'insert'into'is'a'3)node,'must'split'that'node.'

•  Middle'element'moves'to'parent'•  Le@'element'becomes'middle'child'of'parent'•  Right'element'becomes'right'child'of'parent'

Example'

10

6 13 14

Add 16 10

6 13 14 16

10 14

6 16 13

Page 3: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

A'more'complicated'example'

50

70 90 10 30

40

15 25

0 60 80

100

•  Insert'20'

A'more'complicated'example'

50

70 90 10 30

40

15 20 25

0 60 80

100

•  Insert'20'

A'more'complicated'example'

50

70 90 10 20 30

40 0 60 80

100

•  Insert'20'•  Move'20'to'parent'

15 25

A'more'complicated'example'

70 90

40 0 60 80

100

•  Insert'20'•  Move'20'to'parent'

•  Move'20'to'parent'again'

•  Must'split'the'children'

15 25

20 50

10 30

Page 4: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

SpliPng'Root'

•  What'if'the'root'has'3'elements?'•  Make'a'new'root'

10 20 30

40 0 15 25

20

10 30

0 15 25 40

2)3'Tree'Removal'

•  Easiest'case:'– Removing'an'element'from'a'leaf'node'that'is'a'3)node.'Just'remove'element'

–  If'leaf'node'you’re'removing'from'is'a'2)node.'We'need'to'merge'or'rotate.'Removing'an'element'from'a'leaf'node'that'is'a'3)node'is'easy.'Just'remove'element'

•  If'node'is'not'a'leaf'node'– Swap'element'with'next'biggest'element'(in)order'successor)'and'remove'from'leaf'node.'

Merging'

n

Merge

[Singh,Carrano]'

•  Merge'if'sibling'is'a'2)node'

•  Merge'elements'from'parent'to'child'

•  May'leave'parent'node'empty'

RotaFng'•  Rotate'if'sibling'

is'a'3)node'•  Redistribute'

elements'between'sibling'and'parent'

•  Take'elements'from'right'sibling'when'parent'is'a'3)node'

Rotate

n

[Singh,Carrano]'

Page 5: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Removing'Non)leaf'

Rotation: - New sibling adopts child

Merging: - Merged node adopts child

•  If'rotaFon'or'merge'leaves'an'empty'parent,'must'conFnue'up'the'tree'Fll'tree'is'valid'

[Singh,Carrano]'

Removing'Root'

•  If'le@'with'an'empty'root,'simply'remove'root'

[Singh,Carrano]'

Example'

70 90

40 0 60 80

100

•  Remove'90'

15 25

20 50

10 30

Example'

70 100

40 0 60 80

90

•  Remove'90'•  Swap'with'100'and'remove'90'

15 25

20 50

10 30

Page 6: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

80 100

40 0

70

60

•  Remove'90'•  Swap'with'100'and'remove'90'

•  Merge'15 25

20 50

10 30

Example'

80 100

40 0

70

60

•  Remove'40'

15 25

20 50

10 30

Example'

80 100 0

70

60

•  Remove'40'•  Merge'25'and'30'

15 25

20 50

10 30

Example'

80 100 0

70

60

•  Remove'40'•  Merge'25'and'30'

•  Merge'again'15

20 50

10 *

25 30

Page 7: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

80 100

0

70

60

•  Remove'40'•  Merge'25'and'30'

•  Merge'again'15 25 30

10 20

50

2)3)4'Trees'

•  Similar'to'2)3'Trees'•  Nodes'can'have''

– 2'elements,'1'child'– 3'elements,'2'children'– 4'elements,'3'children'

InserFon'

•  Items'inserted'at'leaf'node'•  4'nodes'are'split'early'because'they'cannot'hold'another'element'

•  On'the'way'from'the'root'to'the'leaf'split'4)node'that'are'visited'–  InserFon'can'be'done'in'a'single'pass'

SpliPng'a'4'node'

Without parent

[Carrano]'

Page 8: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

SpliPng'a'4'node'

If parent is a 2-node

[Carrano]'

SpliPng'a'4'node'

If parent is a 3-node

[Carrano]'

Example'

•  Insert'20'•  Pre)split'root'

20 pre-split

[Carrano]'

Example'

70 pre-split

•  Insert'70'•  Pre)split'4)node'

[Carrano]'

Page 9: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

90 pre-split

•  Insert'90'•  Pre)split'4)node'

[Carrano]'

Removal'

•  Just'like'2)3,'if'node'is'non)leaf,'swap'with'in'order'successor'

•  PreempFvely'turn'2)nodes'in'3)nodes'– This'way'deleFon'can'be'done'in'one'pass'– Rotate'if'sibling'is'not'a'2)node'– Merge'if'sibling'is'a'2)node'

Rotate'

N A C S X

I

R

G H

•  Remove'N'•  Rotate'so'R'is'not'a'2)node'

D F

E

Rotate'

N A C

S X

F

D

G H

•  Remove'N'•  Rotate'so'R'is'not'a'2)node'

•  Rotate'so'N'is'not'a'2)node'

I R

E

Page 10: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Rotate'

G A C

S X

F

D

I N

•  Remove'N'•  Rotate'so'R'is'not'a'2)node'

•  Rotate'so'N'is'not'a'2)node'

•  Remove'N'

H R

E

Rotate'

G A C

S X

F

D

•  Remove'N'•  Rotate'so'R'is'not'a'2)node'

•  Rotate'so'N'is'not'a'2)node'

•  Remove'N'

H R

E I

Merge'

G A C

F

D

E

H

I

•  Remove'I'•  Merge'so'H'is'not'a'2)node'

Merge'

G A C E I

•  Remove'I'•  Merge'so'H'is'not'a'2)node'

•  Merge'so'I'is'not'a'2)node'

D F H

Page 11: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Merge'

G H I A C E

•  Remove'I'•  Merge'so'H'is'not'a'2)node'

•  Merge'so'I'is'not'a'2)node'

•  Remove'I'

D F

Merge'

A C E

•  Remove'I'•  Merge'so'H'is'not'a'2)node'

•  Merge'so'I'is'not'a'2)node'

•  Remove'I'

D F

G H

Red)Black'Trees'

•  Converts'2)4'trees'into'binary'trees'•  Red)Black'Trees'are'BSTs'where'every'node'is'colored'red'or'black'

ConverFng'from'2)4'to'red)black'

•  2'Node'becomes'a'black'node'

•  3'Node'becomes'a'black'node'with'one'red'child'

•  4'Node'becomes'a'black'node'with'2'red'children'

a'a'

or'a'''b'

a'

b' a'

b'

a''''b'''c'

b'

c'a'

Page 12: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

ConverFng'from'2)4'to'red)black'

G A C

S X Y

F

D H R

E I F

D H

R G

I X

S Y

C

A

E

Red)Black'ProperFes'

•  Every'node'is'either'red'or'black'•  The'root'is'black'•  External'Nodes'(nulls)'are'black'•  If'a'node'is'red,'both'children'are'black'•  Every'path'from'a'node'to'a'null'has'the'same'number'of'black'nodes'(the'black'height)'

Example'Red)Black'Tree'30

5

15

10 20

70

50 65

85 60

55 40

80 90

- Every node is either red or black - Each path from root to null have the same number of black nodes.

Root node is black

Null nodes are black

Red nodes have black children

Black'Height'

•  Black)height'of'node'x'is'the'number'of'black'nodes'on'the'path'from'x'to'an'external'node'(including'the'external'node'but'not'counFng'x'itself)'

•  If'x is'an'external'node'–  bh(x)'='0'

H

R G

I X

Y S

0 0 0 0

1

1

1

1

0 0

0 0

1 2

2

Page 13: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Red)Black'Tree'Height'

•  The'height'of'a'red)black'tree'with'n'internal'nodes'is'between'log2(n+1)'and'2log2(n+1)'

•  Height'is'constrained'to'O(logn)'

InserFon'–'Bodom'Up'

•  New'nodes'are'inserted'as'leaf'nodes'•  Must'insert'red'node,'inserFng'black'violates'black'height'rule'

•  If'parent'is'black,'done.'•  If'parent'is'red,'violates'“Red'must'have'two'black'children”'rule.'

InserFon'

•  If'sibling'of'parent'is'black,'rotate.'

•  May'need'to'double'rotate'

c!

b!

a!

d!c!

b!

a!

d!

c!

a!

b!

d!

c!

b!

a!

d! c!

b!

a!

d!

Recoloring'

•  If'sibling'of'parent'is'red,'recolor.'

•  Now'that'c'is'red,'may'cause'double'red'again'– Fix'that'double'red'the'same'way'

c!

b!

a!

d!

c!

b!

a!

d!

Page 14: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

F

D H

•  Insert'K'

Example'

F

D H

•  Insert'K'•  Fix'double'red'by'recoloring'

K

Example'

F

D H

•  Insert'K'•  Fix'double'red'by'recoloring'

•  Root'must'remain'black'

K

Example'

F

D H

•  Insert'N'

K

Page 15: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

F

D H

•  Insert'N'•  Fix'double'red'by'rotaFng'

K

N

Example'

F

D K

•  Insert'N'•  Fix'double'red'by'rotaFng'

N H

Removal'

•  Either'removes'a'red'or'a'black'node'•  If'red,'doesn’t'violate'any'rules'•  If'black,'could'potenFally'violate'rules'

Removal'

•  If'removing'red'leaf,'just'remove'and'you’re'done'•  If'it'is'a'single'child'parent,'must'be'black.'Delete,'and'recolor'it’s'child'(which'must'be'red)'black.'

•  If'the'node'has'two'children,'swap'node'with'in'order'successor'–  If'in)order'successor'is'red,'remove'it'and'you’re'done'

–  If'in)order'is'a'single'child'parent,'apply'previous'rule'

Page 16: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

F

D H

R G

I X

S Y

C

A

E

•  Remove'S'

Example'

F

D H

R G

I X

Y

C

A

E

•  Remove'X'

Example'

F

D H

R G

I

Y

C

A

E

•  Remove'X'•  Delete'it'

Example'

F

D H

R G

I Y

C

A

E

•  Remove'X'•  Delete'it'•  Recolor'child'black'

Page 17: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Colored''Edges'•  Colored'edges'definiFon'

–  child'pointers'are'colored'red'or'black'

–  the'root'has'black'edges'–  pointer'to'an'external'node'is'black'

–  no'root)to)external)node'path'has'two'consecuFve'red'edges'

–  every'root'to'external'node'path'has'the'same'number'of'black'edges'

10

7

8

5

30

40

20

25

35

45

60

3

1

Black)Leaf'Removal'

•  To'remove'black'leaf,'replace'the'node'with'an'external'node'and'color'the'edge'“double'black”'

•  To'eliminate'double'black'edge:'–  If'there'is'a'red'edge'nearby,'turn'that'black.'– Also'can'rotate'or'recolor'

color'undetermined'

[Šaltenis]'

Black'Sibling'with'black'nephew'

•  Sibling'becomes'red'•  If'parent'is'red,'becomes'black'

•  If'black,'becomes'double'black'

[Šaltenis]'

Black'Sibling'with'red'nephew'

•  Rotate'and'recolor'red'nephew'

•  May'need'to'double'rotate'

[Šaltenis]'

Page 18: Summary' - University of Michiganweb.eecs.umich.edu/~sugih/courses/eecs281/f11/lectures/Discussion6.pdfA'more'complicated'example' 50 10 30 70 90 40 15 25 0 60 80 100 • Insert'20

Example'

F

D H

R G

I Y

C

A

E

•  Remove'D'•  Swap'D'&'E'

Example'

F

E H

R G

I Y

C

A

D

•  Remove'D'•  Swap'D'&'E'•  Delete'D'

Example'

F

E H

R G

I Y

C

A

•  Remove'D'•  Swap'D'&'E'•  Delete'D'•  Double'black'external'node'

Example'

F

C H

R G

I Y

A E

•  Remove'D'•  Swap'D'&'E'•  Delete'D'•  Double'black'external'node'

•  Rotate'and'recolor'