Avl Tree
Avl Tree
Avl Tree
Fall 2005
AVL-Trees
AVL Trees / Slide 2
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
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 h2 1
2 N h2
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.
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.
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
Double rotation
The new key is inserted in the subtree B1 or B2.
The AVL-property is violated at x.
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
An Extended Example
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
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