AVL Tree
description
Transcript of AVL Tree
AVL Tree
27th Mar 2007
AVL Trees Pencarian node pada unbalanced Binary Search
Trees adalah tidak efisien. Worst case: operations take O(n).
AVL (Adelson-Velskii & Landis) trees adalah BST yang diseimbangkan
Untuk setiap node pada tree, beda tinggi antara left subtree dan right subtree maximum 1 saja.
27th Mar 2007
X X
H
H-1H-2
AVL Trees
27th Mar 2007
12
8 16
4 10
2 6
14
Untuk setiap node pada tree, beda tinggi antara left subtree dan right subtree maximum 1 saja.
27th Mar 2007
AVL property violated here
AVL Trees
27th Mar 2007
10
5
3
20
2
1 3
10
5
3
20
1
43
5
Insertion for AVL TreeAfter insert 1
27th Mar 2007
12
8 16
4 10
2 6
14
1
Insertion for AVL Tree
Untuk memastikan AVL-tree dalam kondisi seimbang, setelah suatu node di-insert-kan, perlu dicek keseimbangan untuk tiap node
Jika setelah insertion ada node yang tidak seimbang, maka dilakukan operasi berikut :Single rotation
Double rotation
27th Mar 2007
Insertions Causing Imbalance
Kemungkinan insertion yang menyebabkan ketidakseimbangan Insertion pada P (outside) case1 Insertion pada Q (inside) case2
27th Mar 2007
RP
Q
k1
k2
Q
k2
P
k1
R
AVL TreeHP=HQ=HR
Kemungkinan insertion yang menyebabkan ketidakseimbangan Insertion pada Q (inside) case 3 Insertion pada R (outside) case 4
Single Rotation (case 1)
27th Mar 2007
A
k2
B
k1
CCBA
k1
k2
insertion pada A menyebabkan ketidakseimbangan
Single Rotation (case 4)
27th Mar 2007
C
k1
B
k2
A
A B C
k2
k1
insertion pada C menyebabkan ketidakseimbangan
Problem with Single Rotation Single rotation does not work for case 2 and 3
(inside case)
27th Mar 2007
Q
k2
P
k1
RR
P
Q
k1
k2
Insertion pada Q kemudian single rotation, tetap tidak seimbang
Double Rotation: Stepsama dengan dua kali single rotation
27th Mar 2007
C
k3
A
k1
D
B
k2
C
k3
A
k1
D
B
k2
Double Rotation: Step
27th Mar 2007
C
k3
A
k1
DB
k2
Double Rotation
27th Mar 2007
C
k3
A
k1
D
B
k2
C
k3
A
k1
DB
k2
Double Rotation
27th Mar 2007
B
k1
D
k3
A
C
k2
B
k1
D
k3
A C
k2
ExampleInsert 3 into the AVL tree
27th Mar 2007
3
11
8 20
4 16 27
8
8
11
4 20
3 16 27
ExampleInsert 5 into the AVL tree
27th Mar 2007
5
11
8 20
4 16 27 8
11
5 20
4 16 27
8
AVL Trees: Exercise
Insertion order:10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40,
5, 55
27th Mar 2007
Remove Operation in AVL Tree Removing a node from an AVL Tree is the
same as removing from a binary search tree. However, it may unbalance the tree.
Similar to insertion, starting from the removed node we check all the nodes in the path up to the root for the first unbalance node.
Use the appropriate single or double rotation to balance the tree.
May need to continue searching for unbalanced nodes all the way to the root.
27th Mar 2007
Deletion X in AVL Trees
Deletion:Case 1: if X is a leaf, delete XCase 2: if X has 1 child, use it to replace XCase 3: if X has 2 children, replace X with its
inorder predecessor (and recursively delete it)
Rebalancing
27th Mar 2007
Delete 55 (case 1)
27th Mar 2007
60
20 70
10 40 65 85
5 15 30 50 80 90
55
Delete 55 (case 1)
27th Mar 2007
60
20 70
10 40 65 85
5 15 30 50 80 90
55
Delete 50 (case 2)
27th Mar 2007
60
20 70
10 40 65 85
5 15 30 50 80 90
55
Delete 50 (case 2)
27th Mar 2007
60
20 70
10 40 65 85
5 15 30 50 80 90
55
Delete 60 (case 3)
27th Mar 2007
60
20 70
10 40 65 85
5 15 30 50 80 90
55
prev
Delete 60 (case 3)
27th Mar 2007
55
20 70
10 40 65 85
5 15 30 50 80 90
Delete 55 (case 3)
27th Mar 2007
55
20 70
10 40 65 85
5 15 30 50 80 90
prev
Delete 55 (case 3)
27th Mar 2007
50
20 70
10 40 65 85
5 15 30 80 90
Delete 50 (case 3)
27th Mar 2007
50
20 70
10 40 65 85
5 15 30 80 90
prev
Delete 50 (case 3)
27th Mar 2007
40
20 70
10 30 65 85
5 15 80 90
Delete 40 (case 3)
27th Mar 2007
40
20 70
10 30 65 85
5 15 80 90
prev
Delete 40 : Rebalancing
27th Mar 2007
30
20 70
10 65 85
5 15 80 90
Case ?
Delete 40: after rebalancing
27th Mar 2007
30
7010
20 65 855
15 80 90
Single rotation is preferred!
Minimum Element in AVL Tree An AVL Tree of height H has at least FH+3-1 nodes,
where Fi is the i-th fibonacci number S0 = 1 S1 = 2 SH = SH-1 + SH-2 + 1
27th Mar 2007
SH-1
SH-2
H
H-1H-2
Summary
Find element, insert element, and remove element operations all have complexity O(log n) for worst case
Insert operation: top-down insertion and bottom up balancing
27th Mar 2007