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

Avl 2

This document discusses rotations in AVL trees during insertion and deletion operations. It describes single and double rotations that may be needed to rebalance the tree when the AVL property is violated. Single and double left/right rotations are explained through examples. Deletion is more complex than insertion because additional rotations may be required while tracing back up the tree to rebalance higher nodes.

Uploaded by

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

Avl 2

This document discusses rotations in AVL trees during insertion and deletion operations. It describes single and double rotations that may be needed to rebalance the tree when the AVL property is violated. Single and double left/right rotations are explained through examples. Deletion is more complex than insertion because additional rotations may be required while tracing back up the tree to rebalance higher nodes.

Uploaded by

Sakshi Bachhety
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

AVL-Trees (Part 2)

COMP171
AVL Trees / Slide 2
A warm-up exercise
Create a BST from a sequence,
A, B, C, D, E, F, G, H
Create a AVL tree for the same sequence.
AVL Trees / Slide 3
More about Rotations
When the AVL property is lost we can rebalance
the tree via rotations
Single Right Rotation (SRR)
Performed when A is unbalanced to the left (the left
subtree is 2 higher than the right subtree) and B is left-
heavy (the left subtree of B is 1 higher than the right
subtree of B).
A
B T3
T1 T2
SRR at A
B
T1 A
T2 T3
AVL Trees / Slide 4
Rotations
Single Left Rotation (SLR)
performed when A is unbalanced to the right (the
right subtree is 2 higher than the left subtree) and
B is right-heavy (the right subtree of B is 1 higher
than the left subtree of B).
A
T1 B
T2 T3
SLR at A
B
A T3
T1 T2
AVL Trees / Slide 5
Rotations
Double Left Rotation (DLR)
Performed when C is unbalanced to the left (the
left subtree is 2 higher than the right subtree), A is
right-heavy (the right subtree of A is 1 higher than
the left subtree of A)
Consists of a single left rotation at node A, followed
by a single right at node C
C
A T4
T1 B
SLR at A
C
B T4
A T3
T2 T3 T1 T2
B
A C
T1 T2
SRR at C
T3 T4
DLR = SLR + SRR
A is
balanced
Intermediate step, get B
AVL Trees / Slide 6
Rotations
Double Right Rotation (DRR)
Performed when A is unbalanced to the right (the
right subtree is 2 higher than the left subtree), C is
left-heavy (the left subtree of C is 1 higher than the
right subtree of C)
Consists of a single right rotation at node C,
followed by a single left rotation at node A
A
T1 C
B T4
SRR at C
A
T1 B
T2 C
T2 T3 T3 T4
B
A C
T1 T2
SLR at A
T3 T4
DRR = SRR + SLR
AVL Trees / Slide 7
Insertion Analysis
Insert the new key as a new leaf just as in
ordinary binary search tree: O(logN)
Then trace the path from the new leaf towards
the root, for each node x encountered: O(logN)
Check height difference: O(1)
If satisfies AVL property, proceed to next node: O(1)
If not, perform a rotation: O(1)
The insertion stops when
A single rotation is performed
Or, weve checked all nodes in the path
Time complexity for insertion O(logN)
logN
AVL Trees / Slide 8
class AVL {
public:
AVL();
AVL(const AVL& a);
~AVL();
bool empty() const;
bool search(const double x);
void insert(const double x);
void remove(const double x);
private:
Struct Node {
double element;
Node* left;
Node* right;
Node* parent;

Node() {}; // constructuro for Node
}
Node* root;
int height(Node* t) const;
void insert(const double x, Node*& t) const; // recursive function
void singleLeftRotation(Node*& k2);
void singleRightRotation(Node*& k2);
void doubleLeftRotation(Node*& k3);
void doubleRightRotation(Node*& k3);
void delete()
}
Implementation:
AVL Trees / Slide 9
Deletion from AVL Tree
Delete a node x as in ordinary binary search
tree
Note that the last (deepest) node in a tree deleted
is a leaf or a node with one child
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 no, perform an appropriate rotation at x
Continue to trace the path until we
reach the root
AVL Trees / Slide 10
Deletion Example 1
Delete 5, Node 10 is unbalanced
Single Rotation

20
10 35
40 15 5 25
18
45
38 30
50
20
15 35
40 18 10 25
45
38 30
50
AVL Trees / Slide 11
Contd
For deletion, after rotation, we need to continue tracing
upward to see if AVL-tree property is violated at other node.

Different from insertion!
20
15 35
40 18 10 25
45
38 30
50
20
15
35
40
18 10
25 45
38
30
50
Continue to check parents
Oops!! Node 20 is unbalanced!!

Single Rotation

AVL Trees / Slide 12
Rotation in Deletion
The rotation strategies (single or double) we learned
can be reused here
Except for one new case: two subtrees of y are of the
same height
rotate with right child
rotate with left child
AVL Trees / Slide 13
Deletion Example 2
Double rotation
Right most child
of left subtree
AVL Trees / Slide 14
Example 2 Contd
New case

You might also like