360 likes | 602 Views
AVL Tree. 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
E N D
AVL Trees • Pencarian node pada unbalanced Binary Search Trees adalahtidakefisien. Worst case: operations take O(n). • AVL (Adelson-Velskii & Landis) trees adalah BST yang diseimbangkan • Untuksetiap node pada tree, bedatinggiantara left subtreedan right subtreemaximum 1 saja. X X H H-2 H-1
AVL Trees 12 8 16 4 10 14 2 6
Untuk setiap node pada tree, beda tinggi antara left subtree dan right subtree maximum 1 saja. AVL property violated here
10 10 5 20 5 20 43 3 3 1 2 1 3 AVL Trees 5
Insertion for AVL Tree • After insert 1 12 8 16 4 10 14 2 6 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
Insertions Causing Imbalance k2 k1 AVL Tree HP=HQ=HR • Kemungkinan insertion yang menyebabkan ketidakseimbangan • Insertion pada P (outside) case1 • Insertion pada Q (inside) case2 k1 k2 R P P Q Q R • Kemungkinan insertion yang menyebabkanketidakseimbangan • Insertion pada Q (inside) case 3 • Insertion pada R (outside) case 4
Single Rotation (case 1) insertion pada A menyebabkan ketidakseimbangan k2 k1 k1 k2 A C A B B C
Single Rotation (case 4) insertion pada C menyebabkan ketidakseimbangan k1 k2 k2 k1 A B C C A B
Problem with Single Rotation • Single rotation does not work for case 2 and 3 (inside case) k2 k1 k1 k2 R P P Q Q R Insertion pada Q kemudian single rotation, tetap tidak seimbang
Double Rotation: Stepsama dengan dua kali single rotation k3 k3 k1 k2 D D k2 k1 A C B C B A
Double Rotation: Step k2 k1 k3 A D B C
Double Rotation k3 k2 k1 k1 k3 D k2 A B C D A B C
Double Rotation k1 k2 k3 k1 k3 A k2 A D B C D B C
11 11 8 20 4 20 4 16 27 3 16 8 27 3 Example • Insert 3 into the AVL tree 8
11 11 8 20 5 20 4 16 27 4 16 8 27 5 Example • Insert 5 into the AVL tree 8
AVL Trees: Exercise • Insertion order: • 10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55
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.
Deletion X in AVL Trees • Deletion: • Case 1: if X is a leaf, delete X • Case 2: if X has 1 child, use it to replace X • Case 3: if X has 2 children, replace X with its inorder predecessor (and recursively delete it) • Rebalancing
Delete 55 (case 1) 60 20 70 10 40 65 85 80 90 5 15 30 50 55
Delete 55 (case 1) 60 20 70 10 40 65 85 80 90 5 15 30 50 55
Delete 50 (case 2) 60 20 70 10 40 65 85 80 90 5 15 30 50 55
Delete 50 (case 2) 60 20 70 10 40 65 85 50 80 90 5 15 30 55
prev Delete 60 (case 3) 60 20 70 10 40 65 85 80 90 5 15 30 50 55
Delete 60 (case 3) 55 20 70 10 40 65 85 80 90 5 15 30 50
prev Delete 55 (case 3) 55 20 70 10 40 65 85 80 90 5 15 30 50
Delete 55 (case 3) 50 20 70 10 40 65 85 80 90 5 15 30
prev Delete 50 (case 3) 50 20 70 10 40 65 85 80 90 5 15 30
Delete 50 (case 3) 40 20 70 10 30 65 85 80 90 5 15
prev Delete 40 (case 3) 40 20 70 10 30 65 85 80 90 5 15
Delete 40 : Rebalancing 30 20 70 10 Case ? 65 85 80 90 5 15
Delete 40: after rebalancing 30 10 70 20 65 85 5 80 90 15 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-thfibonacci number • S0 = 1 • S1 = 2 • SH = SH-1 + SH-2 + 1 SH-1 SH-2 H H-2 H-1
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