Lecture 13 - AVL Trees
Lecture 13 - AVL Trees
Data Structures
Fall 2022
AVL Trees
1 4
2
2 5
3
1 3
4
4 Is this “balanced”?
5
2 6 6
1 3 5 7 7
2
Balanced Tree
• Want a (almost) complete tree after every operation
– Tree is full except possibly in the lower right
6 5
Insert 2 &
4 9 complete tree 2 8
1 5 8 1 4 6 9
3
AVL Trees – Good but not Perfect Balance
• Named after Adelson-Velskii and Landis
• Recall:
– An empty tree has height –1
– A tree with a single node has height 0
4
AVL Trees
• A binary search tree is said to be AVL balanced if:
– The difference in the heights between the left and right sub-
trees is at most 1, and
– Both sub-trees are themselves AVL trees
5
AVL Trees – Example
5 7
2 8 2 8
1 4 7 1 4
3 3 5
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 7
AVL Trees – Example
• Here is a larger AVL tree (42 nodes)
8
AVL Trees – Example
• The root node is AVL-balanced
– Both sub-trees are of height 4 (i.e., at root BF = 0)
9
AVL Trees – Example
• All other nodes (e.g., AF and BL) are AVL balanced
– The sub-trees differ in height by at most one
10
AVL Trees – Example
• Consider this AVL tree
11
AVL Trees – Example
• Consider inserting 15 into this tree
– In this case, the heights of none of the trees change
– Tree remains balanced
12
AVL Trees – Example
• Consider inserting 42 into this tree
13
AVL Trees – Example
• Consider inserting 42 into this tree
– Height of two sub-trees rooted at 44 and 38 have increased
by one
– The tree is still balanced
14
AVL Trees – Example
15
AVL Trees
• To maintain the height balanced property of the AVL tree, it
is necessary to perform a transformation on the tree so
that
16
Transformation (Rotation) of AVL Trees
• Insert operations may cause balance factor to become 2 or
–2 for some node
• Follow the path up to the root, find the first node (i.e.,
deepest) whose new balance violates the AVL condition
17
Balancing AVL Trees – Example
• If a tree is AVL balanced, for an insertion to cause an
imbalance:
– The heights of the sub-trees must differ by 1
– The insertion must increase the height of the deeper sub-tree
by 1
18
Balancing AVL Trees – Example
• Suppose we insert 23 into our initial tree
19
Balancing AVL Trees – Example
• The heights of each of the sub-trees from the insertion
point to the root are increased by one
20
Balancing AVL Trees – Example
• Only two of the nodes are unbalanced, i.e., 17 and 36
– Balance factor of 17 is -2
– Balance factor of 36 is 2
21
Balancing AVL Trees – Example
• We only have to fix the imbalance at the lowest node
22
Fixing Imbalance By Rotation
• Let the node that needs rebalancing be a
• Imbalance during insertion may be handled using four
cases
23
Single Rotation in an AVL Tree
2 2
6 6
1 2 1
1
4 9 4 8
0 0 1 0 0 0 0
1 5 8 1 5 7 9
0
7
24
Right Rotation (RR) in an AVL Tree
a
b
b
c a
c
26
Right Rotation (RR) – Example
• Height of each of the trees in the path back to the root are
increased by one
27
Right Rotation (RR) – Example
• Height of each of the trees in the path back to the root are
increased by one
– Only root node (i.e., 36) violates the balancing factor
28
Right Rotation (RR) – Example
• To fix the imbalance, we perform right rotation of root (i.e.,
36)
29
When to Perform Right Rotation (RR)
• Let the node that needs rebalancing be a
• Case RR
– Insertion into left subtree of left child of node a
– Left tree is heavy (i.e., hleft- hright > [-1,0,1])
30
When to Perform Right Rotation (RR)
• Let the node that needs rebalancing be a
• Case RR
– Insertion into left subtree of left child of node a (RR)
– Left tree is heavy (i.e., hleft > hright )
31
Right Rotation (RR) – Examples
32
Left Rotation (LL) in an AVL Tree
a
b
b
a c
c
33
Left Rotation (LL) – Example
• Consider adding 67
– To fix the imbalance, we perform left rotation of root (i.e., 36)
34
When to Perform Left Rotation (LL)
• Let the node that needs rebalancing be a
• Case LL
– Insertion into right subtree of right child of node a
– Right tree is heavy (i.e., hleft < hright )
35
When to Perform Left Rotation (LL)
• Let the node that needs rebalancing be a
• Case LL
– Insertion into right subtree of right child of node a (LL)
– Right tree is heavy (i.e., hleft < hright )
36
Single Rotation May Be Insufficient
• The imbalance is just
shifted to the other
side
37
Right-Left Rotation (RL) or "Double Right"
c
c
b
a
b
Right
a c
b Left
a
• Perform a left rotation on • Node b becomes the new
the left subtree root
• Node b takes ownership
of node c as its right child
• Node c takes ownership
of node b's right child
– As its left child
38
Right-Left Rotation (RL) or "Double Right" –
Example
39
When to Perform Right-Left Rotation (RL)
• Let the node that needs rebalancing be a
• Case RL
– Insertion into right subtree of left child of node a
40
When to Perform Right-Left Rotation (RL)
• Let the node that needs rebalancing be a
• Case RL
– Insertion into right subtree of left child of node a (RL)
Left
heavy
Right
heavy
41
Left-Right Rotation (LR) or "Double Left"
a a
b
c b Left
a c
b Right c
42
Left-Right Rotation (LR) or "Double Left" –
Example
• Consider adding 67
– To fix the imbalance, we perform left-right (LR) rotation of root
43
When to Perform Left-Right Rotation (LR)
• Let the node that needs rebalancing be a
• Case LR
– Insertion into left subtree of right child of node a
44
When to Perform Left-Right Rotation (LR)
• Let the node that needs rebalancing be a
• Case LR
– Insertion into left subtree of right child of node a (LR)
Right
heavy
Left
heavy
45
Summary: How And When To Rotate?
• Let the node that needs rebalancing be a
• Violation during insertion may occur in four cases
Case 4:
47
LR
Summary: How And When To Rotate?
if tree is right heavy {
if tree's right subtree is left
heavy {
Perform Left-Right rotation
}
else {
Perform Single Left rotation
}
}
… …
else if tree is left heavy {
if tree's left subtree is right
heavy {
Perform Right-Left rotation
}
else {
Perform Single Right rotation
}
}
48
AVL Tree – Complete Example
• Construct AVL Tree with the following input elements
– 3, 2, 1, 4, 5, 6, 7
Insert
Insert 3,
3, 2,
2,
11
Insert
Insert 4,
4, 55
49
AVL Tree – Complete Example
• Construct AVL Tree with the following input elements
– 3, 2, 1, 4, 5, 6, 7
Insert
Insert 4,
4, 55
Insert
Insert 66
50
AVL Tree – Complete Example
• Construct AVL Tree with the following input elements
– 3, 2, 1, 4, 5, 6, 7
Insert
Insert 66
Insert
Insert 77
51
AVL Tree – Complete Example
• Construct AVL Tree with the following input elements
– 3, 2, 1, 4, 5, 6, 7
Insert
Insert 77
52
AVL Tree – Complete Example
• Suppose the following elements have to be inserted
further
– 16, 15, 14, 13, 12, 11, 10, 8 Insert 16,
Insert 16,
15
15
Insert
Insert 14
14
53
AVL Tree – Complete Example
• Suppose the following elements have to be inserted
further
– 16, 15, 14, 13, 12, 11, 10, 8 Insert
Insert 14
14
Insert
Insert 13
13
54
AVL Tree – Complete Example
• Suppose the following elements have to be inserted
further
– 16, 15, 14, 13, 12, 11, 10, 8 Insert
Insert 13
13
Insert
Insert 12
12
55
AVL Tree – Complete Example
• Suppose the following elements have to be inserted
further
– 16, 15, 14, 13, 12, 11, 10, 8 Insert
Insert 12
12
Insert
Insert 11,
11,
10
10 56
AVL Tree – Complete Example
• Suppose the following elements have to be inserted
further
– 16, 15, 14, 13, 12, 11, 10, 8 Insert
Insert 11,
11, 10
10 then
then
88
57
AVL Tree Deletion
73
AVL Tree: Deletion
• Goal: To preserve the height balance property of BST after
deletion
74
AVL Tree: Deletion
• BST deletion breaks the invarialants of AVL tree
7 7
Delete(9)
4 9 4
3 3
75
AVL Tree: Deletion
• BST deletion breaks the balance factors of incestors
1 7 01 7
Delete(3)
1 4 0 9 01 4 0 9
0 3
76
AVL Tree: BST Deletion
• Case 1: Node to be deleted has degree 0 (i.e., leaf node)
– Consider deleting node containing 62
78
AVL Tree: BST Deletion
• Case 3: Node p to be deleted has two children (i.e., degree
2)
– Replace node p with the minimum object in the right subtree
– Delete that object from the right subtree
– Consider deleting node containing 78
79
AVL Tree: BST Deletion
• Case 3: Node p to be deleted has two children (i.e., degree
2)
– Replace node p with the minimum object in the right subtree
– Delete that object from the right subtree
– Consider deleting node containing 78
80
AVL Tree Deletion
• After removing a child, delete must check for imbalance
– Similar to insert operation
81
AVL Tree Deletion: Example
• Deleting a node from an ALV tree can cause imbalance
– Consider deleting node 32
82
AVL Tree Deletion: Example
• The balance factor changes at only nodes between the
root and the parent node of the physically deleted node
– Starting at the action position find the first imbalanced node
83
AVL Tree Deletion: Example
• Perform rotation using shaded nodes
– Node a is the first imbalanced node from the action position
– Node c is the child node of node a that has the higher height
– Node b is the child node of node b that has the higher height
c
b
84
AVL Tree Deletion: Example
• The tree after LR rotation
85
AVL Tree Deletion: Multiple Imbalance
• The imbalance at the first imbalance node due to a
deletion operation can be restored using rotation
– Resulting subtree does not have the same height as the
original subtree !!!
– Nodes that are further up the tree may require re-balancing
86
AVL Tree Deletion: Example
• Consider the following AVL tree
87
AVL Tree Deletion: Example
• Node with value 80 is deleted
– The imbalance is on left-left subtree
– Imbalance can be fixed using RR rotation
88
AVL Tree Deletion: Example
• Node 50 requires re-balancing
– The imbalance is on left-left subtree
– Imbalance can be fixed using RR rotation – Home work!!
Resultant height of
the subtree is 1
89
AVL Tree Deletion: Example
• Consider the following AVL tree
– Suppose node with value 1 is deleted
90
AVL Tree Deletion: Example
• While its previous parent, 2, is not unbalanced, its grandparent 3 is
– The imbalance is in the right-right subtree
91
AVL Tree Deletion: Example
• While its previous parent, 2, is not unbalanced, its grandparent 3 is
– The imbalance is in the right-right subtree
– Imbalance can be fixed using LL rotation
92
AVL Tree Deletion: Example
• The subtrees of node 5 is now balanced
• Recursing to the root, however, 8 is also unbalanced
– The imbalance is in right-left subtree
93
AVL Tree Deletion: Example
• The node with value 8 is unbalanced
– The imbalance is in right-left subtree
– LR rotation can fix imbalance
94
AVL Tree Deletion: Example
• Root 21 is still imbalanced
– The imbalance is in right-right subtree
95
AVL Tree Deletion: Example
• Root 21 is still imbalanced
– The imbalance is in right-right subtree
– LL rotation can fix the imbalance
96
Any Question So Far?
97