COMP171
Fall 2006
AVL-Trees (Part 1: Single Rotations)
Lecture 17-18
AVL Trees / Slide 2
Balance Binary Search Tree
Worst case height of binary search tree: N-1
Insertion, deletion can be O(N) in the worst case
We want a tree with small height
Height of a binary tree with N node is at least
(log N)
Goal: keep the height of a binary search tree
O(log N)
Balanced binary search trees
Examples: AVL tree, red-black tree
AVL Trees / Slide 3
Balanced Tree?
Suggestion 1: the left and right subtrees of
root have the same height
But the left and right subtrees may be linear lists!
Suggestion 2: every node must have left and
right subtrees of the same height
Only complete binary trees satisfy
Too rigid to be useful
Our choice: for each node, the height of the
left and right subtrees can differ at most 1
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.
Height of subtree: Max # of edges to a leaf
Height of an empty subtree: -1
Height of one node: 0
AVL tree AVL property
violated here
AVL Trees / Slide 5
AVL Tree with
Minimum Number of Nodes
N0 = 1 N1 = 2 N2 =4 N3 = N1+N2+1=7
height of left=?
Height right=?
AVL Trees / Slide 6
Smallest AVL tree
of height 7
Smallest AVL tree
of height 8
Smallest AVL tree of height 9
AVL Trees / Slide 7
Height of AVL Tree
Denote Nh the minimum number of nodes in an AVL
tree of height h
N0=0, N1 =2 (base)
Nh= Nh-1 + Nh-2 +1 (recursive relation)
N > Nh= Nh-1 + Nh-2 +1
>2 Nh-2 >4 Nh-4 >…>2i Nh-2i
If h is even, let i=h/2–1. The equation becomes N>2h/2-1N2
N>2h/2-1x4 h=O(logN)
If h is odd, let i=(h-1)/2. The equation becomes N>2(h-1)/2N1
N>2(h-1)/2x2 h=O(logN)
Thus, many operations (i.e. searching) on an AVL tree
will take O(log N) time
AVL Trees / Slide 8
Insertion in AVL Tree
Basically follows insertion strategy of binary
search tree
But may cause violation of AVL tree property
Restore the destroyed balance condition if
needed
6 8
6
Insert 6
Original AVL tree Restore AVL property
Property violated
AVL Trees / Slide 9
Some Observations
After an insertion, only nodes that are on the path
from the insertion point to the root might have their
balance altered
Because only those nodes have their subtrees altered
Rebalance the tree at the deepest such node
guarantees that the entire tree satisfies the AVL
property
6 8
6
Node 5,8,7 might Rebalance node 7
have balance altered guarantees the whole tree be AVL
AVL Trees / Slide 10
Different Cases for Rebalance
Denote the node that must be rebalanced α
Case 1: an insertion into the left subtree of the left
child of α
Case 2: an insertion into the right subtree of the left
child of α
Case 3: an insertion into the left subtree of the right
child of α
Case 4: an insertion into the right subtree of the
right child of α
Cases 1&4 are mirror image symmetries
with respect to α, as are cases 2&3
AVL Trees / Slide 11
Rotations
Rebalance of AVL tree are done with simple
modification to tree, known as rotation
Insertion occurs on the “outside” (i.e., left-left
or right-right) is fixed by single rotation of the
tree
Insertion occurs on the “inside” (i.e., left-right
or right-left) is fixed by double rotation of the
tree
AVL Trees / Slide 12
Insertion Algorithm
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
Note: 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 13
Single Rotation to Fix Case 1(left-left)
k2 violates
An insertion in subtree X, Solution: single rotation
AVL property violated at node k2
AVL-property quiz:
1. Can Y have the same height as the new X?
2. Can Y have the same height as Z?
AVL Trees / Slide 14
Single Rotation Case 1 Example
k2 k1
k1 X k2
X
AVL Trees / Slide 15
Single Rotation to Fix Case 4 (right-right)
k1 violates
An insertion in subtree Z
Case 4 is a symmetric case to case 1
Insertion takes O(Height of AVL Tree) time,
Single rotation takes O(1) time
AVL Trees / Slide 16
Single Rotation Example
Sequentially insert 3, 2, 1, 4, 5, 6 to an AVL Tree
3
3 2 2 2
2
2 1 3 1 3 1 3
Insert 3, 2 1 Single rotation Insert 4
4 Insert 5,
Insert 1 4
violation at node 3
violation at node 3
2 2 5
4
1 4 1 4
2 5
3 5 3 5
1 3 6
Single rotation Insert 6,
violation at node 2 6 Single rotation
AVL Trees / Slide 17
If we continue to insert 7, 16, 15, 14, 13, 12, 11, 10, 8, 9
4 4
2 5 2 6
1 3 6 1 3 5 7
Insert 7,
violation at node 5 7 Single rotation
4
4
2 6
2 6
What is the result?
1 3 5
1 3 5 7
Single rotation
Insert 16, fine 16 But….
Insert 15
Violation remains
violation at node 7 15
AVL Trees / Slide 18
Single Rotation Fails to fix Case 2&3
Case 2: violation in k2 because of Single rotation result
insertion in subtree Y
Single rotation fails to fix case 2&3
Take case 2 as an example (case 3 is a
symmetry to it )
The problem is subtree Y is too deep
Single rotation doesn’t make it any less deep
AVL Trees / Slide 19
Single Rotation Fails
What shall we do?
We need to rotate twice
Double Rotation