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

Lecture 13 - AVL Trees

The document discusses AVL trees, a type of self-balancing binary search tree that maintains balance by ensuring the height difference between left and right subtrees is at most one. It outlines the concepts of balance factors, the need for rotations to maintain balance during insertions, and the types of rotations (single and double) required to fix imbalances. Additionally, it provides examples of constructing and maintaining AVL trees through insertions and deletions.

Uploaded by

fastian.0542
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Lecture 13 - AVL Trees

The document discusses AVL trees, a type of self-balancing binary search tree that maintains balance by ensuring the height difference between left and right subtrees is at most one. It outlines the concepts of balance factors, the need for rotations to maintain balance during insertions, and the types of rotations (single and double) required to fix imbalances. Additionally, it provides examples of constructing and maintaining AVL trees through insertions and deletions.

Uploaded by

fastian.0542
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 82

CS-2001

Data Structures
Fall 2022
AVL Trees

Mr. Muhammad Usman Joyia


National University of Computer
and Emerging Sciences,
Faisalabad, Pakistan.
Balanced and Unbalanced BST

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

• Maintenance of such as tree is expensive


– For example, insert 2 in the tree on the left and then rebuild
as a complete tree

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

• Balance is defined by comparing the height of the two sub-


trees

• 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

• AVL trees with 1, 2, 3 and 4 nodes

5
AVL Trees – Example

5 7

2 8 2 8

1 4 7 1 4

3 3 5

An AVL Tree Not an AVL Tree


6
AVL Trees – Balance Factor
• An AVL tree has balance factor calculated at every node
– Height of the left subtree minus the height of the right subtree
– For an AVL tree, the balances of the nodes are always -1, 0 or
1.
Height of node =h
Balance Factor (BF) = hleft - hright
Empty height = -1
Tree A Tree B
(AVL) (AVL)
height=2 BF=1-0=1
1
6 6
4 9 0 4 9
0 0
1 5 -1 -1 1 5 8 -1

-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

Tree A Tree B (not AVL)


balance factor
(AVL) 3 1-(-1) = 2
6 6
2
4 9 4 9
1 -1
1 5 7 1 5 8
0
7
Height of node = h
Balance factor = hleft-hright
Empty height = -1

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

– In-order traversal of the transformed tree is the same as for


the original tree (i.e., the new tree remains a binary search
tree).

– perform a transformation on the tree

16
Transformation (Rotation) of AVL Trees
• Insert operations may cause balance factor to become 2 or
–2 for some node

• Only nodes on the path from insertion point to root node


have possibly change in height

• Follow the path up to the root, find the first node (i.e.,
deepest) whose new balance violates the AVL condition

• If a new balance factor (the difference hleft-hright) is not [-


1,0,1]
– Adjust tree by rotation around the node a

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

• Outside cases (Single


Rotation)
1. Right rotation (case RR)
2. Left rotation (case LL)

• Inside cases (Double


Rotation)
3. Right-left rotation (case
RL)
4. Left-right rotation (case
LR)

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

• Node b becomes the new root


• Node b takes ownership of node a, as it's right child
• Node a takes ownership of node b's right child (or NULL if
no child)
– As left child of node a
25
Right Rotation (RR) – Example
• Consider adding 6

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

• Node b becomes the new root


• Node b takes ownership of node a as its left child
• Node a takes ownership of node b's left child (or NULL if no
child)
– As right child of node a

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

• Perform a right rotation • Node b becomes the new


on the right subtree root
• Node b takes ownership
of node a as its left child
• Node a takes ownership
of node b's left child
– As its right child

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

• Outside cases (Single


Rotation)
1. Insertion into left subtree
of left child of node a
Case 1:
(case RR)
RR

2. Insertion into right


subtree of right child of
node a (case LL)
Case 2: LL
46
Summary: How And When To Rotate?
• Let the node that needs rebalancing be a
• Violation during insertion may occur in four cases

• Inside cases (Double


Rotation)
3. Insertion into right
subtree of left child of a
(case RL) Case 3:
RL

4. Insertion into left subtree


of right child of a (case
LR)

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

• Step 1: Perform BST delete


– Maintains the BST property
– May break the balance factors of ancestors!

• Step 2: Fix the AVL tree balance constraint


– Perform transformation on the tree by means of rotation such
that
 BST property is maintained
 Transformation fixes any balance factors that are < -1 or > 1

74
AVL Tree: Deletion
• BST deletion breaks the invarialants of AVL tree

7 7

Delete(9)
4 9 4

3 3

NOT an AVL tree!

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

• Action position: Reference to parent node from which a


node has been physically removed
– First node whose height may be changed by deletion
77
AVL Tree: BST Deletion
• Case 2: Node to be deleted has degree 1 (i.e., node with
one child)
– Consider deleting node containing 84

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

• Rotations can be used to re-balance an out-of-balanced


AVL tree
– LL, RR, LR and RL rotations

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

• Deleting a node may cause more than one AVL


imbalance !!!

• Unfortunately, delete may cause O(h) imbalances


– Insertions will only cause one imbalance that must be fixed

86
AVL Tree Deletion: Example
• Consider the following AVL tree

Original height of the


subtree rooted at 75 is 2

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

You might also like