avl trees - bguds182/wiki.files/05-avl.pdf · avl trees. motivation in a binary search tree, all...

36
AVL trees AVL trees

Upload: others

Post on 18-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

AVL trees

AVL trees

Page 2: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Dynamic set ADT

A dynamic set ADT is a structure that stores a set ofelements. Each element has a (unique) key and satellite data.The structure supports the following operations.

Search(S , k) Return the element whose key is k .

Insert(S , x) Add x to S .

Delete(S , x) Remove x from S (the operation receives apointer to x).

Minimum(S) Return the element in S with smallest key.

Maximum(S) Return the element in S with largest key.

Successor(S , x) Return the element in S with smallest keythat is larger than x .key.

Predecessor(S , x) Return the element in S with largest keythat is smaller than x .key.

AVL trees

Page 3: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Motivation

In a binary search tree, all operation take Θ(h) time inthe worst case, where h is the height of the tree.

The optimal height of a binary search tree is blog nc.Even if we start with a balanced tree, insertion/deletionoperations can make the tree unbalanced.

An AVL tree is a special kind of a binary search tree,which is always kept banalced.

AVL trees

Page 4: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

AVL tree

An AVL tree is a binary search tree such that for every node x ,

|height(x .left)− height(x .right)| ≤ 1

(we assume that height(NULL) = −1)

4

2 6

10

168

14

12

1

00

0

2

3

1

0

AVL trees are named after their inventors, GeorgyAdelson-Velsky and Evgenii Landis.

AVL trees

Page 5: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The height of an AVL tree

Theorem

The height of an AVL tree is Θ(log n).

Let nk be the minimum number of nodes in an AVL treewith height k .

n0 = 1.

n1 = 2.

n2 = 2 + 1 + 1 = 4.

n3 = 4 + 2 + 1 = 7.

nk = nk−1 + nk−2 + 1.

AVL trees

Page 6: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The height of an AVL tree

Theorem

The height of an AVL tree is Θ(log n).

Let nk be the minimum number of nodes in an AVL treewith height k .

n0 = 1.

n1 = 2.

n2 = 2 + 1 + 1 = 4.

n3 = 4 + 2 + 1 = 7.

nk = nk−1 + nk−2 + 1.

AVL trees

Page 7: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The height of an AVL tree

Theorem

The height of an AVL tree is Θ(log n).

Let nk be the minimum number of nodes in an AVL treewith height k .

n0 = 1.

n1 = 2.

n2 = 2 + 1 + 1 = 4.

n3 = 4 + 2 + 1 = 7.

nk = nk−1 + nk−2 + 1.

10

AVL trees

Page 8: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The height of an AVL tree

Theorem

The height of an AVL tree is Θ(log n).

Let nk be the minimum number of nodes in an AVL treewith height k .

n0 = 1.

n1 = 2.

n2 = 2 + 1 + 1 = 4.

n3 = 4 + 2 + 1 = 7.

nk = nk−1 + nk−2 + 1.

21

AVL trees

Page 9: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The height of an AVL tree

nk = Fk+3 − 1 where Fk is the k-th Fibonacci number.The proof is by induction:Base: n0 = 1 = F3 − 1, n1 = 2 = F4 − 1.

nk = nk−1+nk−2+1 = (Fk+2−1)+(Fk+1−1)+1 = Fk+3−1

It is known that

Fk =

(1+√5

2

)k

−(

1−√5

2

)k

√5

(1+√5

2

)k

− 1√

5

Therefore,

nk ≥

(1+√5

2

)k+3

− 1√

5− 1 ≥

(1+√5

2

)k+3

√5

− 1.45

k ≤ log(1+√5)/2

(√5(nk + 1.45)

)− 3 ≤ 1.441 log nk .

The height of an AVL tree with n nodes is ≤ 1.441 log n.AVL trees

Page 10: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Implementation

A node in an AVL tree has the same fields defined forbinary search tree (key, left, right, p).

Additionally, every node has a field height which storesthe height of the node.

AVL trees

Page 11: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Searching

The Search operation is handled exactly like in regularbinary search trees.

Time complexity: Θ(h) = Θ(log n).

AVL trees

Page 12: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Insertion/Deletion

Insertion and deletion are done by first applying theinsertion/deletion algorithm of binary search trees.

After the insertion/deletion, the tree may not bebalanced, so we need to correct it.

The time complexity of insertion/deletion in AVL tree isΘ(log n).

AVL trees

Page 13: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Insertion

After a new leaf is inserted, the height of some of its ancestorsincrease by 1. The heights of the other nodes are unchanged.

4

2 6

10

3

168

14

12

1

00

0

0

01

12

23

34

4

2 6

10

3

158

14

12

30

0

0

01

12

23

13

17

16 19

18

4

AVL trees

Page 14: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Insertion

The height fields of the nodes can be updated by going up thetree from the inserted leaf, and for each ancestor v of the leafperform

v .height = 1 + max(v .left.height, v .right.height)

4

2 6

10

3

168

14

12

1

00

0

0

01

12

23

34

4

2 6

10

3

158

14

12

30

0

0

01

12

23

13

17

16 19

18

4

AVL trees

Page 15: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Insertion

Some of the ancestors of the leaf may become unbalanced.

4

2 6

10

3

168

14

12

1

00

0

0

01

12

23

34

4

2 6

10

3

158

14

12

30

0

0

01

12

23

13

17

16 19

18

4

AVL trees

Page 16: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Let x be the lowest node on the path from the new leafto the root which is unbalanced (if x doesn’t exist we aredone).

There are 4 cases. In Case 1 suppose that the new leaf isin the subtree of x .left.left.

Let y = x .left.

Let h be the height of the right child of x .

Since x was balanced before the insertion, the height of ybefore the insertion was h − 1/h/h + 1.

x

y

A B

C h

New leaf

h-1/h/h+1

AVL trees

Page 17: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The insertion either increases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of y is h + 1before the insertion, and h + 2 afterward.

The height of x before the insertion is h + 2, and h + 3afterward.

x

y

A B

C h

New leaf

h+1h+2

AVL trees

Page 18: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The insertion either increases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of y is h + 1before the insertion, and h + 2 afterward.

The height of x before the insertion is h + 2, and h + 3afterward.

x

y

A B

C h

New leaf

h+1h+2

h+2h+3

AVL trees

Page 19: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

After the insertion, y has a child with height h + 1. Thischild must be the left child A. The height of A before theinsertion is h.

The height of the right child of y is h.

x

y

A B

C h

New leaf

h+1h+2

h+2h+3

hh+1 h

AVL trees

Page 20: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

To fix the imbalance of x , perform the following operationcalled right rotation.

The rotation operation doesn’t change the inorder of thenodes. Therefore, the new tree is a valid binary searchtree.

x

y

A B

C hh+1h+2

h+2h+3

hh+1 h

x

y

A

B C

h+1

h h

AVL trees

Page 21: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The heights of x and y after the rotations are h + 1 andh + 2.

After the rotation, x and y are balanced.

x

y

A B

C hh+1h+2

h+2h+3

hh+1 h

x

y

A

B C

h+1

h h

h+1

h+2

AVL trees

Page 22: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Assume x had a parent the before the rotation, anddenote it by u.

Let w be the sibling of x before the rotation.

The height of w is h + 1/h + 2/h + 3.

If the height of w is h + 1, then u is unbalanced after theinsertion (before the rotation).

u

w wh+1/h+2/h+3

h+3/h+3/h+4h+4

h+1/h+2/h+3

h+3/h+3/h+4u

x

y

A B

C hh+1h+2

h+2h+3

hh+1 h

x

y

A

B C

h+1

h h

h+1

h+2

AVL trees

Page 23: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

After the rotation, the height the sibling of w (node y) ish + 2, which is equal to the height of the sibling of wbefore the rotation. Therefore, u is balanced.

The height of u after the rotation is the same as theheight before the insertion. Repeating these arguments,every ancestor of u is balanced and has same height asbefore the insertion.

u

w wh+1/h+2/h+3

h+3/h+3/h+4h+4

h+1/h+2/h+3

h+3/h+3/h+4u

x

y

A B

C hh+1h+2

h+2h+3

hh+1 h

x

y

A

B C

h+1

h h

h+1

h+2

AVL trees

Page 24: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Example

x

4

2 6

10

3

168

14

12

y

16

14

12

x

4

2

6 103

8

y

In this example, h = 0.

AVL trees

Page 25: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

In Case 2, suppose that the new leaf is in the subtree ofx .left.right.

Let y = x .left.

Performing a rotation on x and y does not work.

x

y

A B

C hh+1h+2

h+2h+3

hh+1h

x

y

A

B Ch+1

h

h

h+2

h+3

AVL trees

Page 26: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Let z = y .right. Perform a double rotation on x , y , z .

The double rotation doesn’t change the inorder of thenodes.

After the double rotation, x , y , z are balanced. Moreover,the height of z is the same as the height of x before theinsertion, and therefore all ancestors of z are balanced.

A B

x

y

A z

D hh+1h+2

h+2h+3

hh+1h

x

C D

h+1

h+2

B Ch-1h h-1

y

z

h hh-1

h

h+1

AVL trees

Page 27: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Case 3 is when the new leaf is in the subtree ofx .right.right, and Case 4 is when the new leaf is in thesubtree of x .right.left.

Case 3 and Case 4 are symmetric to Case 1 and Case 2.

Case 3 is shown below.

x

y

CB

A h h+1h+2

h+2h+3

hh+1h

x

y

C

A B

h+1

h h

h+1

h+2

AVL trees

Page 28: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Deletion

After a node is deleted, the heights of some of itsancestors decrease by 1. The heights of the other nodesare unchanged.

A single ancestor of the deleted node can becomeunbalanced.

1 4 28

6 9

11

7 0

10

2

3

5

10

120

2

1

3

AVL trees

Page 29: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Let x be the unbalanced node (if x doesn’t exist we aredone).

Assume that the deleted node is in the subtree of x .right.

Let y = x .left.

Since x was balanced before the deletion, the height ofx .right before the deletion was h − 1/h/h + 1.

x

y

A B

Chh-1/h/h+1

AVL trees

Page 30: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The deletion either decreases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of x .right ish − 1 before the insertion, and h − 2 afterward.

The height of x is h + 1 (the insertion doesn’t change theheight).

x

y

A B

Ch h-1h-2

AVL trees

Page 31: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

The deletion either decreases the height of a node ordoesn’t change the height. Since x is now unbalanced,the only possible case is that the height of x .right ish − 1 before the insertion, and h − 2 afterward.

The height of x is h + 1 (the insertion doesn’t change theheight).

x

y

A B

Ch h-1h-2

h+1

AVL trees

Page 32: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Since y has height h and it is balanced, one of y ’schildren has height h − 1 and the other child has heighth − 1/h − 2.

In Case 1, assume that the height of y .left is h − 1, andthe height of y .right is h − 1/h − 2.

x

y

A B

Ch h-1h-2

h+1

h-1/h-2h-1

AVL trees

Page 33: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

In Case 1 we perform a right rotation on x and y .

After the rotation, the height of x is h/h − 1 and theheight of y is h + 1/h.

After the rotation, x and y are balanced.

x

y

A B

Ch h-1h-2

h+1

h-1/h-2h-1

x

y

A

B C

h-1

h-2

h/h-1

h+1/h

h-1/h-2

AVL trees

Page 34: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

Assume x had a parent the before the rotation, anddenote it by u.

Let w be the sibling of x before the rotation.

The height of w is h/h + 1/h + 3.

u is balanced after the insertion (before the rotation).

h+2/h+2/h+3u

wh/h+1/h+2

wh/h+1/h+2

u

x

y

A B

Ch h-1h-2

h+1

h-1/h-2h-1

x

y

A

B C

h-1

h-2

h/h-1

h+1/h

h-1/h-2

AVL trees

Page 35: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

After the rotation, u can become unbalanced. Thisoccurs when the height of w is h + 2, and the height of yafter the rotation is h.

If the height of w is h, and the height after the rotation ish, then the height of u is h + 2 and h + 1 afterwards.This can cause an imbalance in an ancestor of u.

In the two cases above, additional rotation is needed.h+2/h+2/h+3u

wh/h+1/h+2

wh/h+1/h+2

u

x

y

A B

Ch h-1h-2

h+1

h-1/h-2h-1

x

y

A

B C

h-1

h-2

h/h-1

h+1/h

h-1/h-2

AVL trees

Page 36: AVL trees - BGUds182/wiki.files/05-AVL.pdf · AVL trees. Motivation In a binary search tree, all operation take ( h) time in the worst case, where h is the height of the tree. The

In Case 2, assume that the height of y .left is h − 2, andthe height of y .right is h − 1.

Let z = y .right.

In this case we perform a double rotation of x , y , z .

A B

x

y

A z

D x

C D

h-1

h-2

h

B C h-2/h-3

y

z

h-2

h-1h-1h-2h

h-2

h+1

h-1

h-2/h-3

h-2/h-3 h-2/h-3

AVL trees