Transcript

AVL Trees 1

AVL Trees6

3 8

4

v

z

AVL Trees 2

AVL Tree Definition

AVL trees are balanced.An AVL Tree is a binary search tree such that for every internal node v of T, 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:

  AVL Trees:

AVL trees were invented in 1962 by two Russian scientist G.M Adelson Velsky & E.M Landis.  Definition:

An AVL tree is a binary search tree in which the balance factor of every node, which is defined as the difference b/w the heights of the node’s left & right sub

trees is either 0 or +1 or -1 . Balance factor = ht of left sub tree – ht of right sub tree.ht=height

Example :

AVL tree BST ( not AVL tree ) 1 2

0 1 0 0 1 -1 0 1 -1

0 0 0 0

10

5 20

2

4 7

10

5 20

2

4

8

12

7

8

 

If an insertion of a new node makes an AVL tree unbalanced , we transform the tree by a rotation

 

Rotation : A Rotation in an AVL tree is a local

transformation of its sub tree rooted at a node whose balance has become either +2 or -2 ,if there are several such nodes, we rotate the tree rooted at the unbalanced node that is the closest to the newly inserted leaf.

  Types of rotations :

Totally there are four types of rotations

1. Single right rotation or R-rotation

2. Single left rotation or L-rotation

3. Double right-left rotation or RL-rotation

4. Double left-right rotation or LR-rotation

  Points to remember to select different rotation technique :

1.Straight line with positive unbalanced.apply Right rotation for unbalanced node.

+2 0

+1 0 0

0

5

2

452

4

 

2.Straight line with negative unbalanced.apply left rotation for unbalanced node.

-2 0

-1 0 0

0

5

7

675

6

 

3.Curved line with positive unbalanced.apply left-right rotation.

Right rotation for unbalanced node and left rotation for the nearest node.

+2 0

-1 0

0 0

5

2

4

52

4

 

4.Curved line with negative unbalanced.apply right-left rotation.

Left rotation for unbalanced node and right rotation for the nearest node.

-2 0

+1 0 0 0

5

7

8

85

7

AVL Trees 11

Height of an AVL TreeFact: The height of an AVL tree storing n keys is O(log n).Proof: Let us bound n(h): the minimum number of internal nodes of an AVL tree of height h.We easily see that n(1) = 1 and n(2) = 2For 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) +2Thus the height of an AVL tree is O(log n)

3

4 n(1)

n(2)

AVL Trees 12

Insertion in an AVL TreeInsertion is as in a binary search treeAlways done by expanding an external node.Example: 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

AVL Trees 13

Trinode Restructuringlet (a,b,c) be an inorder listing of x, y, zperform the rotations needed to make b the topmost node of the three

b=y

a=z

c=x

T0

T1

T2 T3

b=y

a=z c=x

T0 T1 T2 T3

c=y

b=x

a=z

T0

T1 T2

T3b=x

c=ya=z

T0 T1 T2 T3

case 1: single rotation(a left rotation about a)

case 2: double rotation(a right rotation about c, then a left rotation about a)

(other two cases are symmetrical)

AVL Trees 14

Insertion Example, continued

88

44

17 78

32 50

48 62

2

5

1

1

3

4

2

1

54

1

T0T2

T3

x

y

z

2

3

4

5

67

1

88

44

17

7832 50

48

622

4

1

1

2 2

3

154

1

T0 T1

T2

T3

x

y z

unbalanced...

...balanced

1

2

3

4

5

6

7

T1

AVL Trees 15

Restructuring (as Single Rotations)

Single Rotations:

T0T1

T2

T3

c = xb = y

a = z

T0 T1 T2

T3

c = xb = y

a = zsingle rotation

T3T2

T1

T0

a = xb = y

c = z

T0T1T2

T3

a = xb = y

c = zsingle rotation

AVL Trees 16

Restructuring (as Double Rotations)

double rotations:

double rotationa = z

b = xc = y

T0T2

T1

T3 T0

T2T3T1

a = zb = x

c = y

double rotationc = z

b = xa = y

T0T2

T1

T3 T0

T2T3 T1

c = zb = x

a = y

AVL Trees 17

Removal in an AVL TreeRemoval begins as in a binary search tree, which means the node removed will become an empty external node. Its parent, w, may cause an imbalance.Example:

44

17

7832 50

8848

62

54

44

17

7850

8848

62

54

before deletion of 32 after deletion

AVL Trees 18

Rebalancing after a Removal

Let z be the first unbalanced node encountered while travelling up the tree from w. Also, let y be the child of z with the larger height, and let x be the child of y with the larger height.We perform restructure(x) to restore balance at z.As this restructuring may upset the balance of another node higher in the tree, we must 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

AVL Trees 19

Running Times for AVL Trees

a single restructure is O(1) using a linked-structure binary tree

find is O(log n) height of tree is O(log n), no restructures needed

insert is O(log n) initial find is O(log n) Restructuring up the tree, maintaining heights is O(log

n)

remove is O(log n) initial find is O(log n) Restructuring up the tree, maintaining heights is O(log

n)

top related