Вы находитесь на странице: 1из 43

 First-invented self-balancing binary

search tree
 Named after its two inventors,
1. G.M. Adelson-Velsky and
2. E.M. Landis,
› published it in their 1962 paper "An
algorithm for the organization of
information."
 First, its a binary search tree...

L R

 L <= P and P <= R


 Is this a binary tree search tree?
50

29 70

12 35 56 77

5 17 32 46 53 60 71 79

3 9 15 21 28 34 43 51 52 54 58 68
 An AVL tree is a balanced binary tree
 To understand balance we need to
understand the notion of Tree Height
55 Height 2

32 71 Height 1

64 86 Height 0
 By default, nodes with no children have
a height of Height of 0.

55 Height 2

Height 0 32 71 Height 1

Height 64 86 Height 0
0
 But, we must also understand the
concept of Sub-trees
Height = max(L.height, R.height) + 1

sub-tree L has a
height of 0 sub-tree R has a
55 Height 2 height of 1

Height 0 32 71 Height 1

Height 0 64 86 Height 0
 Also empty sub-trees have a Height of -1
Height = max(L.height, R.height) + 1

44 Height = 2 = max(0, 1) + 1

58 Height = 1 = max(-1, 0) + 1

91 Height = 0 = max(-1,-1) + 1
 Anyway, the AVL Balance Property is as
follows...
 For ALL nodes, the Height of the Left and
Right Sub-trees can only differ by 1.

P A Node
L.height R.height 1
L R
1. After every insertion
2. Check to see if an imbalance was
created.
• All you have to do backtrack up the tree
3. If you find an imbalance, correct it.
4. As long as the original tree is an AVL
tree, there are only 4 types of
imbalances that can occur.
 Left-Left (Single Rotation)
 Right-Right(Single Rotation)
 Left-Right (Double Rotation)
 Right-Left(Double Rotation)
Single rotation: insert 14, 15, 16, 13, 12, 11, 10

• First insert 14 and


15:
14

15

• Now insert 16.


Single rotations:

• Inserting 16 causes AVL violation:

14

15

16

• Need to rotate.
Single rotations:

• Rotation type:

14

15

16
Single rotations:

• Rotation restores AVL balance:

15

14 16
Single rotations:

• Now insert 13 and 12:


15

14 16

13

12

• AVL violation - need to


rotate.
Single rotations:

• Rotation type:
15

14 16

13

12
Single rotations:

15

13 16

12 14

• Now insert 11.


Single rotations:
15

13 16

12 14

11

• AVL violation – need to


rotate
Single rotations:
• Rotation type: 15

13 16

12 14

11
Single rotations:

13

12 15

16
11 14

• Now insert 10.


Single rotations:

13

12 15

16
11 14

10

• AVL violation – need to


rotate
Single rotations:
• Rotation type:
13

12 15

16
11 14

10
Single rotations:

13

11 15

10 12 14 16

• AVL balance restored.


Double rotations: insert 1, 2, 3, 4, 5, 7, 6, 9, 8
• First insert 1 and 2:
13

11 15

10 12 14 16
Double rotations:
• AVL violation -
rotate 13

11 15

16
10 12 14

2
Double rotations:
• Rotation type:
13

11 15

16
10 12 14

2
Double rotations:
• AVL balance
restored: 13

11 15

2 12 14 16

1 10

• Now insert 3.
Double rotations:
• AVL violation –
rotate: 13

11 15

2 12
12 14 16

1 10

3
Double rotations:
• Rotation type:
13

11 15

2 12 14 16

1 10

3
Double rotations:
• AVL balance
restored: 13

10 15

2 11 14 16

1 3 12

• Now insert 4.
Double rotations:
• AVL violation - rotate
13

10 15

2 11 14 16

1 3 12

4
Double rotations:
• Rotation type:
13

10 15

2 11 14 16

1 3 12

4
Double rotations:

10

2 13

1 11 15
3

4 12 14 16

• Now insert 5.
Double rotations:

10

2 13

1 11 15
3

4 12 14 16

• AVL violation –
rotate.
Single rotations:
• Rotation type:
10

2 13

1 11 15
3

4 12 14 16

5
Single rotations:
• AVL violation –
rotate.
10

2 13

1 11 15
4

5 12 14 16
3

7
Single rotations:
• Rotation type:
10

2 13

1 11 15
4

5 12 14 16
3

7
Double rotations:
• AVL violation -
rotate. 10

4 13

2 11 15
5

7 12 14 16
1 3

6
Double rotations:
• Rotation type:
10

4 13

2 11 15
5

7 12 14 16
1 3

6
Double rotations:
• AVL balance
restored. 10

4 13

2 11 15
6

12 14 16
1 3 5 7

• Now insert 9 and 8.


Double rotations:
• Rotation type:
10

4 13

2 11 15
6

12 14 16
1 3 5 7

8
Final tree:
• Tree is almost perfectly
balanced 10

4 13

2 11 15
6

12 14 16
1 3 5 8

7 9

Вам также может понравиться