View
46
Download
5
Category
Tags:
Preview:
DESCRIPTION
AVL TREE
Citation preview
AVL Trees 2
Binary Search Trees (reminder)
Each tree node contains a value. For every node,
its left subtree contains smaller values, and its right subtree contains larger values.
The time complexity of a search operation is proportional to the tree’s depth. The good case: If the tree is balanced, then every operation
takes O(logn) time. The bad case: The tree might get very unbalanced.
For example, when inserting ordered numbers to the tree, the resulting height will be exactly n.
AVL Trees 3
Balanced Search Trees : Balanced Tree: A binary tree in which the heights of the two
sub trees of every node differ by at most 1.
Several Varieties AVL trees Red-Black trees B-Trees (used for searching secondary memory)
AVL Trees 4
Balanced Search Trees (Contd…)
Nodes are added and deleted so that the height of the tree is kept under control.
Insertion and deletion has more work to do, but retrieval never has more than log2 n because height is already controlled in case of retrieval.
AVL Trees 5
AVL Trees :Motivation: We want to guarantee O(log n) running time on searching/insertion/deletion operations.
Idea: Keep the tree balanced after each operation.
Solution: AVL (Adelson-Velskii and Landis) trees.
AVL tree property: For every node in the tree, the height of the left and right subtrees differs by at most 1.
AVL Trees 6
AVL Trees (Contd…) : a BST where each node has a balance factor
balance factor of a leaf node is 0 balance factor of any node:
Height (left subtree) – Height (right subtree)
Insertions or deletions can change the balance factor of one or more nodes.
if a balance factor becomes 2 or -2 the AVL tree must be rebalanced It is done by rotating the nodes
AVL Trees 7
Some AVL Trees :
0
00
-10
-1
-1
1
0
0
Balance Factor : height( left subtree ) - height( right subtree )
Balance value
AVL Trees 8
Depth of an AVL treeTheorem: Any AVL tree with n nodes has height less
than 1.441 log n.
Proof: Given an n-node AVL tree, we want to find an upper bound on the height of the tree.Fix h.
What is the smallest n such that there is an AVL tree of height h with n nodes?
Let Sh be the set of all AVL trees of height h that have as few nodes as possible.
AVL Trees 9
Depth of an AVL tree (contd…)Let wh be the number of nodes in any one of these trees.
w0 = 1, w1 = 2
Suppose T Sh, where h 2. Let TL and TR be T’s left and right sub trees. Since T has height h, either TL or TR has height h-1. Suppose it’s TR.
By definition, both TL and TR are AVL trees. In fact, TR Sh-1 or else it could be replaced by a smaller AVL tree of height h-1 to give an AVL tree of height h that is smaller than T.
AVL Trees 10
Depth of an AVL tree (contd…)Similarly, TL Sh-2.
Therefore, wh = 1 + wh-2 + wh-1 .
Claim: For h 0, wh h , where = (1 + 5) / 2 1.6.Proof: The proof is by induction on h.
Basis step: h=0. w0 = 1 = 0.
h=1. w1 = 2 > 1.Induction step: Suppose the claim is true for 0 m h, where h 1.
AVL Trees 11
Depth of an AVL tree (contd…)Then
wh+1 = 1 + wh-1 + wh
1 + h-1 + h (by the i.h.)= 1 + h-1 (1 + )= 1 + h+1 (1+ = 2)> h+1
Thus, the claim is true.From the claim, in an n-node AVL tree of height h,
n wh h (from the Claim)
h log n= (log n) / (log )< 1.441 log n
AVL Trees 12
AVL trees: During Runtime Search :takes O(log n) time, because height of the
tree is always O(log n). Insertion : O(log n) time because we do a search
(O(log n) time), and then we may have to visit every node on the path back to the root, performing up to 2 single rotations (O(1) time each) to fix the tree.
Deletion : O(log n) time.
AVL Trees 13
AVL Trees: Search, Insertion
AVL tree Search :is the same as BST Search.
AVL tree Insertion: same as BST insertion, except that we might have to fix the AVL tree after an insert.
These operations will take time O(d), where d is the depth of the node being found/inserted.
What is the maximum height of an n-node AVL tree?
AVL Trees 14
AVL Tree : Insertion Follow a search path as for a BST
Allocate a node and insert the item at the end of the path (as for BST) balance factor of new node is 0
if a balance factor becomes 2 or -2 perform a rotation to bring the AVL tree back in balanced form.
AVL Trees 15
Insertion (contd…) : Let x be the deepest node where an imbalance occurs.
Four cases to consider. The insertion is in the
1. Left sub tree of the Left child of x. (LL) Right Rotation
2. Right sub tree of the Left child of x. (LR) Left - Right
3. Left sub tree of the Right child of x. (RL) Right - Left
4. Right sub tree of the Right child of x. (RR) Left Rotation
Idea: LL & RR - Single rotation.
LR & RL - Double rotation.
LR16
Four Imbalance Cases :
Case 1: The left subtree is higher than the right subtree, and this is caused by the left subtree of the left child.
Case 2: The left subtree is higher than the right subtree, and this is caused by the right subtree of the left child.
Case 4:The symmetric case to case 1
Case 3:The symmetric case to case 2
k2
k1
BC
k1
k2
BA
A
C
k2
k1
RP
Q
k1
k2
PR
Q
LL RR
RL
AVL Trees 17
1) Simple Insertion :
0
-11
0
-1
1
0
0 0
01
0
-1
1
0
000
0
#'s are Balance Factors
No Rotation Required
0
AVL Trees 18
2
2) Insertion with Right Rotation :
0
01
0
-1
1
0
0 0
01
0
-1
0
0
00
0
0
1
Simple Right Rotation Required
0
2
0
Right Rotation
LL
AVL Trees 19
Example #
12
8 16
14104
62
1
k2
k1 C
A B
Right Rotation
12
8
16
14
10
4
6
2
1
k2
k1
C
A
B
LL
AVL Trees 20
3) Insertion with Left Rotation:
0
01
0
-1
0
0
00
0
0
0
0 0
-1
0
-10
0
1
0
-2
-1
-1
-1
0
Simple Left Rotation Required
Left Rotation
RR
AVL Trees 21
4)Insertion with Double Rotation:
0
-10
0
-1
1
0
00
0
1
-1
1
-2 Double Rotation Needed (RL) :
a). Right rotation around right subtree of the unbalanced subtree
b). Left Rotation around root of the unbalanced subtree
AVL Trees 24
In nutshell :
0
0
0
1
1
0
-11
000
-10
0
-1
1
0
00
0
1
-1
1
-2
On balancing
(RL Insertion)
AVL Trees 25
Example # 12
8 16
14104
62
5
k3
k1
D
A
B
k2
Left rotation on 4
k1
12
8 16
14106
4
5
k3
D
A B
k2
2
Right rotation on 8
12
6 16
1484
52 10
k3k1
DB
k2
A
(LR Insertion)
AVL Trees 26
Extended Example # 1 : Insert : 3 , 2 , 1 , 4 , 5 , 6 , 7 , 16
3
2
1
Balancing by Right Rotation (LL)
4
5
Balancing by Left Rotation (RR)
AVL Trees 28
Extended Example # 1 : Insert : 3 , 2 , 1 , 4 , 5 , 6 , 7 , 16
2
1 4
53
Balancing node 2 by Left Rotation (RR)
67
AVL Trees 29
Extended Example # 1 : Insert : 3 , 2 , 1 , 4 , 5 , 6 , 7 , 16
4
2 5
63
Balancing node 5 by Left Rotation (RR)
1
716
Ans.
AVL Trees 30
Extended Example # 2 : Insert : 64 , 1 , 14 , 26 , 13 , 110 , 98 , 85
64
1
14
Since node 64 is imbalanced, thus by LR Insertion
32
14
164
2613 110
98
85
Inserting 85 :
Node 110 becomes imbalanced.
Performing Right Rotation
(LL)
Ans.
AVL Trees 33
AVL Trees : Deletion AVL tree Deletion: same as BST deletion.
In event of an imbalance due to deletion, one or more rotation are needed to be applied to balance the AVL trees.
On deletion of a node X from the AVL tree let A be the closest ancestor node on the path from X to the root node, with balance factor = +2 or -2.
To restore balance the rotation is first classified as L or R depending on whether the deletion occurred on the left or right subtree of A
AVL Trees 34
Now depending on the value of BF(B) where B is the left or right subtree of A, the R or L imbalance is further classified as:
R0, R1 or R-1, L0, L1 or L-1.
The L and R rotations are the mirror images of each other. Thus, L0 R0 L1 R1 L-1 R-1
Here we are considering the Right Rotations, Left Rotations can be done in the similar way.
Deletion : (contd…)
AVL Trees 35
60
1) Deletion by R(0) Rotation : Delete node 60 Deletion is to be done on the right side of
root node A(46) and BF(B)=0
Delete 60
23
20
18
7
46
24
60
54
23
20
18
7
46
24
(+1)
(0)
(+2)
(0)
A
B
54
A
B
6023
20
18
724
Right Rotation R(0)20
18
7
46
23
24
A
B A
B(+2)
(0)
(-1)
(+1)
46
54
54
AVL Trees 36
2) Deletion by R(1) Rotation : Delete node 39 Deletion is to be done on the Right side of
root node A(37) and BF(B)=+1
41
37
(+1)
28
26
18
16
(+1)
39
41
37
(+1)
28
26
18
16
(+1)
39
Delete 39
A
B
A
B
41
28
26
18
16
(+2)
(+1)B
A
Right Rotation R(1)
39
37B
37
26
18
16
(0)
28 41
(0)A
AVL Trees 37
3) Deletion by R(-1) Rotation : Delete node 52 Deletion is to be done on the Right side of
root node A(44) and BF(B)=-1
52
4822
18
44
(+1)
(-1)
28
2329
A
B
52
4822
18
44
(+1)
(-1)
28
2329
A
BDelete 52
52
4822
18
44
(+1)
(-1)
28
2329
A
22
1823
44
2948
28Right Rotation R(-1)
(0) (0)AB
B
AVL Trees 38
120
128
85(0)
(0)
(0)
(-1) (0)
(+1)
Deletion Examples : Delete elements 120,64,130 from the
following search tree.
13598
64
26
110
(-1)(0)
130
(0) 99(0)
AVL Trees 39
Delete 120 :
120
128
85(0)
(0) (-1) (0)
(+1)
13598
64
26
110
(-1)(0)
130
(0) 99(0)
Ans.
AVL Trees 40
99
Delete 64 :
128
85
(0) (-1) (0)
(+1)
13598
64
26
110
(-1)(0)
130
(0) (0)(0)
(1)
Ans.
So we Follow R(0) Rotation.
(+1)
Delete 130 :
(+2)
41
85
99
128
(1) (-1) (0)
13598
26
110
(-1)(0)
130
(0)(0)
Node 128 becomes unbalanced BF(128)=+2
So we Follow R(0) Rotation.
(-1)98
42
85
99
Delete 130 :
128
(1) (-1)
(+2)
13598
26
110
(-1)(0)
(0)(0)
Node 128 becomes unbalanced BF(128)=+2
99
(0) (-1)(0)
12885
26 110
(+1)(+1)
(0)
135
R(0) Rotation
Ans.
AVL Trees 43
Example : Insertion + DeletionQues 1(a). Insert the following keys in order
shown to construct an AVL search treeA, B, C, D, E
Ques 1(b). Then Delete the last two keys in order of Last in First out.
Soln.
Recommended