0% found this document useful (0 votes)
307 views

Avl Tree

The document summarizes AVL trees, which are self-balancing binary search trees. It defines AVL trees as binary search trees where the heights of the left and right subtrees differ by at most one for every node. Rotations are used to rebalance the tree after insertions or deletions to maintain this height balance property. The document provides examples of single and double rotations used in AVL tree insertions and deletions. It also includes an extended example of multiple insertions into an AVL tree.

Uploaded by

harishan_sci
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
307 views

Avl Tree

The document summarizes AVL trees, which are self-balancing binary search trees. It defines AVL trees as binary search trees where the heights of the left and right subtrees differ by at most one for every node. Rotations are used to rebalance the tree after insertions or deletions to maintain this height balance property. The document provides examples of single and double rotations used in AVL tree insertions and deletions. It also includes an extended example of multiple insertions into an AVL tree.

Uploaded by

harishan_sci
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 24

COMP171

Fall 2005

AVL-Trees
AVL Trees / Slide 2

Balanced binary tree


 The disadvantage of a binary search tree is that its
height can be as large as N-1
 This means that the time needed to perform insertion
and deletion and many other operations can be O(N)
in the worst case
 We want a tree with small height
 A binary tree with N node has height at least (log N)
 Thus, our goal is to keep the height of a binary search
tree O(log N)
 Such trees are called balanced binary search trees.
Examples are AVL tree, red-black tree.
AVL Trees / Slide 3

AVL tree
Height of a node
 The height of a leaf is 1. The height of a null
pointer is zero.
 The height of an internal node is the
maximum height of its children plus 1

Note that this definition of height is different from the


one we defined previously (we defined the height of a
leaf as zero previously).
AVL Trees / Slide 4

AVL tree
 An AVL tree is a binary search tree in which
 for every node in the tree, the height of the left and
right subtrees differ by at most 1.

AVL property
violated here
AVL Trees / Slide 5

AVL tree
 Let x be the root of an AVL tree of height h
 Let Nh denote the minimum number of nodes in an
AVL tree of height h
 Clearly, Ni ≥ Ni-1 by definition
 We have N h  N h 1  N h  2  1
 2 N h2  1
 2 N h2
 By repeated substitution, we obtain the general form
N h  2i N h  2
 The boundary conditions are: N1=1 and N2 =2. This
implies that h = O(log Nh).
 Thus, many operations (searching, insertion, deletion)
on an AVL tree will take O(log N) time.
AVL Trees / Slide 6

Rotations
 When the tree structure changes (e.g., insertion or
deletion), we need to transform the tree to restore the
AVL tree property.
 This is done using single rotations or double rotations.

e.g. Single Rotation


y
x
x
y C
A C
B
B
A After Rotation
Before Rotation
AVL Trees / Slide 7

Rotations
 Since an insertion/deletion involves
adding/deleting a single node, this can only
increase/decrease the height of some subtree
by 1
 Thus, if the AVL tree property is violated at a
node x, it means that the heights of left(x) ad
right(x) differ by exactly 2.
 Rotations will be applied to x to restore the
AVL tree property.
AVL Trees / Slide 8

Insertion
 First, insert the new key as a new leaf just as in
ordinary binary search tree
 Then trace the path from the new leaf towards the
root. For each node x encountered, check if heights
of left(x) and right(x) differ by at most 1.
 If yes, proceed to parent(x). If not, restructure by
doing either a single rotation or a double rotation [next
slide].
 For insertion, once we perform a rotation at a node x,
we won’t need to perform any rotation at any ancestor
of x.
AVL Trees / Slide 9

Insertion
 Let x be the node at which left(x) and right(x)
differ by more than 1
 Assume that the height of x is h+3
 There are 4 cases
 Height of left(x) is h+2 (i.e. height of right(x) is h)
Height of left(left(x)) is h+1  single rotate with left child
Height of right(left(x)) is h+1  double rotate with left child
 Height of right(x) is h+2 (i.e. height of left(x) is h)
Height of right(right(x)) is h+1  single rotate with right child
Height of left(right(x)) is h+1  double rotate with right child

Note: Our test conditions for the 4 cases are different from the code shown in the
textbook. These conditions allow a uniform treatment between insertion and deletion.
AVL Trees / Slide 10

Single rotation
The new key is inserted in the subtree A.
The AVL-property is violated at x
 height of left(x) is h+2
 height of right(x) is h.
AVL Trees / Slide 11

Single rotation
The new key is inserted in the subtree C.
The AVL-property is violated at x.

Single rotation takes O(1) time.


Insertion takes O(log N) time.
AVL Trees / Slide 12

AVL Tree 5 x
5

3 y 8 C
3 8

1 4
1 4 B
A
0.8

Insert 0.8
3

1
5

8
After rotation
4
0.8
AVL Trees / Slide 13

Double rotation
The new key is inserted in the subtree B1 or B2.
The AVL-property is violated at x.
x-y-z forms a zig-zag shape

also called left-right rotate


AVL Trees / Slide 14

Double rotation
The new key is inserted in the subtree B1 or B2.
The AVL-property is violated at x.

also called right-left rotate


AVL Trees / Slide 15

5 x
AVL Tree 5

y C
8
3
3 8

A 1 4 z
1 4

B 3.5

Insert 3.5
4

3
5

3.5 8 After Rotation


1
AVL Trees / Slide 16

An Extended Example

Insert 3,2,1,4,5,6,7, 16,15,14 Single rotation

3 2
3
3

2 1
Fig 1 2 3
Fig 4
Fig 2
2 1 2
Single rotation
Fig 3
1
1 3
3
Fig 5 Fig 6 4
4
5
AVL Trees / Slide 17
2
2
Single rotation
1
1
4 4
3 5
3 5
Fig 8
Fig 7 6
4 4

Single rotation
2 2
5 5
1 3 6 1 3 6
4

Fig 9 Fig 10 7
2
6
1 3 7

5 Fig 11
AVL Trees / Slide 18

2
6
1 3 7

5 16
Fig 12

4
Double rotation 4
2
6
2
7 6
1 3
1 3 15
5 16 5
16
Fig 13 7
15 Fig 14
AVL Trees / Slide 19

4 4
Double rotation

2 2 7
6
15 1 3 15
1 3 5 6
16
7 5 14 16
Fig 15
14 Fig 16
AVL Trees / Slide 20

Deletion
 Delete a node x as in ordinary binary search tree.
Note that the last node deleted is a leaf.
 Then trace the path from the new leaf towards the
root.
 For each node x encountered, check if heights of
left(x) and right(x) differ by at most 1. If yes, proceed
to parent(x). If not, perform an appropriate rotation at
x. There are 4 cases as in the case of insertion.
 For deletion, after we perform a rotation at x, we may
have to perform a rotation at some ancestor of x.
Thus, we must continue to trace the path until we
reach the root.
AVL Trees / Slide 21

Deletion
 On closer examination: the single rotations for
deletion can be divided into 4 cases (instead
of 2 cases)
 Two cases for rotate with left child
 Two cases for rotate with right child
AVL Trees / Slide 22

Single rotations in deletion


In both figures, a node is deleted in subtree C, causing the height
to drop to h. The height of y is h+2. When the height of subtree A
is h+1, the height of B can be h or h+1. Fortunately, the same
single rotation can correct both cases.

rotate with left child


AVL Trees / Slide 23

Single rotations in deletion


In both figures, a node is deleted in subtree A, causing the height
to drop to h. The height of y is h+2. When the height of subtree C
is h+1, the height of B can be h or h+1. A single rotation can
correct both cases.

rotate with right child


AVL Trees / Slide 24

Rotations in deletion
 There are 4 cases for single rotations, but we
do not need to distinguish among them.
 There are exactly two cases for double
rotations (as in the case of insertion)
 Therefore, we can reuse exactly the same
procedure for insertion to determine which
rotation to perform

You might also like