balanced binary search trees · 2018-04-24 · avl tree definition • adelson-velsky and landis...

31
© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 1 AVL Trees 6 3 8 4 v z

Upload: others

Post on 19-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 1

AVL Trees

6

3 8

4

v

z

Page 2: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 2

AVL Tree Definition

• Adelson-Velsky and

Landis

• binary search tree

• balanced

each internal node v

the heights of the

children of v can

differ by at most 1

88

44

17 78

32 50

48 62

2

4

1

1

2

3

1

1

An example of an AVL tree where the

heights are shown next to the nodes

Page 3: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 3

Height of an AVL TreeFact: The height of an AVL tree storing n keys is O(log n).

Proof (by induction): n(h): the minimum number of internal nodes of an AVL tree of height h.

n(1) = 1 and n(2) = 2

For n > 2, an AVL tree of height h contains the root node, one AVL subtree of height n-1 and another of height n-2.

That is, n(h) = 1 + n(h-1) + n(h-2)

Knowing n(h-1) > n(h-2), we get n(h) > 2n(h-2). Son(h) > 2n(h-2), n(h) > 4n(h-4), n(h) > 8n(n-6), … (by induction),

n(h) > 2in(h-2i)

Solving the base case we get: n(h) > 2 h/2 - 1

Taking logarithms: h < 2log n(h) +2

Thus the height of an AVL tree is O(log n)

3

4 n(1)

n(2)

Page 4: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 4

InsertionInsertion is as in a binary search treeAlways done by expanding an external node.Insert 54:

44

17 78

32 50 88

48 62

54w

b=x

a=y

c=z

44

17 78

32 50 88

48 62

before insertion

after insertion

Page 5: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 5

InsertionInsertion is like a binary search treeAlways done by expanding an external node.Insert 54:

44

17 78

32 50 88

48 62

54w

b=x

a=y

c=z

44

17 78

32 50 88

48 62

before insertion

after insertion

ImbalanceNode z

InsertNode w

Page 6: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 6

Insertionz = first unbalanced node encountered while

travelling up the tree from w.

y = child of z with the larger height,

x = child of y with the larger height

trinode restructuring to restore balance at z

Page 7: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser Red-Black Trees 7

Overview of 4 Cases of Trinode Restructuring

2

4

6

6

2

4

6

4

2

2

6

4

2 6

4

Case 1 Case 2 Case 3 Case 4

z ->y ->x ->

Page 8: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Rotation operation

AVL Trees 8

With a linked structure• Constant number of updates• O(1) time

Consider subTree points to y and we also have x and y

1. y.left = x.right2. x.right = y3. subTree = x

Page 9: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 9

Trinode Restructuring:Case 1

Single Rotation:

T0T1

T2

T3

c = xb = y

a = z

T0 T1 T2

T3

c = x

b = y

a = zsingle rotation

• Keys: a < b < c• Nodes: grandparent z is not

balanced, y is parent, x is node

• Not balanced at a, the smallest key• x has the largest key c

• Result: middle key b at the top

Page 10: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser Red-Black Trees 10

Example for Case 1

Case 1

T0 T1 T2 T3

T0

T1

T2 T3

2

6

4

2 6

4

zyx

Page 11: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 11

Trinode Restructuring:Case 2

Single Rotation:

Not balanced at c, the largest key

x has the smallest key a

Result: middle key b at the top

• Keys: a < b < c• Nodes: grandparent z is not

balanced, y is parent, x is node

T3

T2

T1

T0

a = x

b = y

c = z

T0

T1T 2

T

3

a = xb = y

c = zsingle rotation

Page 12: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser Red-Black Trees 12

Example for Case 2

Case 2

T0 T1 T2 T3

T0 T1

T2

T3

6

2

4

2 6

4

zyx

Page 13: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 13

Trinode Restructuring:Case 3

double rotation:

double rotationa = z

b = x

c = y

T0T2

T1

T3 T0

T2T3T1

a = zb = x

c = y

• Keys: a < b < c• Nodes: grandparent z is not

balanced, y is parent, x is node

• Not balanced at a, the smallest key• x has the middle key b• x is rotated above y• x is then rotated above x

• Result: middle key b at the top

Page 14: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser Red-Black Trees 14

Example for Case 3

Case 3

T0 T1 T2 T3

T0

T1 T2

T3

T0

T1

T2 T3

2

6

4

2 6

4

2

4

6

zyx

Page 15: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 15

Trinode Restructuring:Case 4

• double rotation

• Not balanced at c, the largest key

• x has the middle key b

• x is rotated above y

• x is then rotated above z

• Result: middle key b at the top

double rotationc = z

b = xa = y

T0T2

T1

T3 T0

T2T3 T1

c = zb = x

a = y

• Keys: a < b < c• Nodes: grandparent z is not

balanced, y is parent, x is node

T0 T0T1 T2

T3 T1T2

T3

Page 16: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser Red-Black Trees 16

Example for Case 4

Case 4

T0 T1 T2 T3

T0 T1

T3

T2T1

T0T2

T3

6

2

4

2 6

4

6

4

2

zyx

Page 17: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 17

Insert 54 (Case 3 or 4?)

88

44

17

7832 50

48

622

4

1

1

2 2

3

1

54

1

T0 T1

T2

T3

x

y z

unbalanced...

...balanced

T1

88

44

17 78

32 50

48 62

2

5

1

1

3

4

2

1

54

1

T0T2

T3

x

y

z

Draw the double rotation

Page 18: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Trinode Restructuring summary

Case imbalance/grandparent z

Node x Rotation

1 Smallest key a Largest key c single

2 Largest key c Smallest key a single

3 Smallest key a Middle key b double

4 Largest key c Middle key b double

AVL Trees 18

Page 19: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Trinode Restructuring Summary

Case imbalance/grandparent z

Node x Rotation

1 Smallest key a Largest key c single

2 Largest key c Smallest key a single

3 Smallest key a Middle key b double

4 Largest key c Middle key b double

AVL Trees 19

The resulting balanced subtree has: • middle key b at the top• smallest key a as left child

• T0 and T1 are left and right subtrees of a• largest key c as right child

• T2 and T3 are left and right subtrees of c

Page 20: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 20

RemovalRemoval begins as in a binary search tree the node removed will become an empty external node.

Its parent, w, may cause an imbalance.

Remove 32, imbalance at 44

44

17

7832 50

8848

62

54

44

17

7850

8848

62

54

before deletion of 32 after deletion

Page 21: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 21

Rebalancing after a Removalz = first unbalanced node encountered while travelling up the tree from w.

y = child of z with the larger height,

x = child of y with the larger height

trinode restructuring to restore balance at z—Case 1 in example

44

17

7850

8848

62

54

w

c=x

b=y

a=z

44

17

78

50 88

48

62

54

Page 22: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 22

Rebalancing after a Removalthis restructuring may upset the balance of another node

higher in the tree

continue checking for balance until the root of T is reached

44

17

7850

8848

62

54

w

c=x

b=y

a=z

44

17

78

50 88

48

62

54

Page 23: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 23

Rebalancing after a Removal[Slide added –jyp]

In the case below, restructuring the subtree rooted at 44 created a new subtree (incidentally now rooted at 62) which is has height decreased by 1

This might cause an unbalanced situation at an ancestor of this subtree

44

17

7850

88

62w

c=x

b=y

a=z

44

17

78

50 88

62

Page 24: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Balanced tree

AVL Trees 24

20

1

30

60

50

70

80

55

35

40

45

10

Page 25: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Delete 80

AVL Trees 25

20

1

30

60

50

70

80

55

35

40

45

10

Page 26: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Not balanced at 70

AVL Trees 26

20

1

30

60

50

70

55

35

40

45

10

Page 27: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Single rotation

AVL Trees 27

20

1

30

55

50

60

70

35

40

45

10

Page 28: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Anything wrong?

AVL Trees 28

20

1

30

55

50

60

70

35

40

45

10

Page 29: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

Not balanced at 50!

AVL Trees 29

20

1

30

55

50

60

70

35

40

45

10

Page 30: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser AVL Trees 30

AVL Tree Performancen entries

O(n) space

A single restructuring takes O(1) time

using a linked-structure binary tree

Operation Worst-caseTimeComplexity

Get/search O(log n) Up to height log n

Put/insert O(log n) O(log n): searching & restructuring

Remove/delete O(log n) O(log n): searching & restructuring up to height log n

Page 31: Balanced Binary Search Trees · 2018-04-24 · AVL Tree Definition • Adelson-Velsky and Landis • binary search tree • balanced each internal node v the heights of the children

© 2014 Goodrich, Tamassia, Goldwasser

AVL Trees

balanced Binary Search Tree (BST)

Insert/delete operations include rebalancing if needed

Worst-case time complexity: O(log n)

AVL Trees 31