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

AVL Tree Operations

The document discusses AVL trees, which are self-balancing binary search trees. AVL trees ensure that the height difference between the left and right subtrees of any node is at most 1. This keeps search, insertion, and deletion operations efficient at O(log n) time. Rotations are used to rebalance the tree during insertions and deletions to maintain the height balance property. Single and double rotations are explained to restore balance after inserting a new node. An extended example walks through inserting nodes into an AVL tree using rotations.

Uploaded by

prasad barla
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views

AVL Tree Operations

The document discusses AVL trees, which are self-balancing binary search trees. AVL trees ensure that the height difference between the left and right subtrees of any node is at most 1. This keeps search, insertion, and deletion operations efficient at O(log n) time. Rotations are used to rebalance the tree during insertions and deletions to maintain the height balance property. Single and double rotations are explained to restore balance after inserting a new node. An extended example walks through inserting nodes into an AVL tree using rotations.

Uploaded by

prasad barla
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 23

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
 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 4

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  N N 1
h h 1 h2

 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 5

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 6

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 7

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 8

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 9

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 10

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 11

5 x
AVL Tree 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 12

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 13

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 14

5 x
AVL Tree 5
C
y 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 15

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 16
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 17

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 18

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 19

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 20

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 21

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 22

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 23

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