380 likes | 483 Views
AVL Tree. Outline. AVL Tree Definition Properties Operations. AVL Trees. Unbalanced Binary Search Trees are bad. Worst case: operations take O(n). AVL (Adelson-Velskii & Landis) trees maintain balance.
E N D
Outline • AVL Tree • Definition • Properties • Operations
AVL Trees • Unbalanced Binary Search Trees are bad. Worst case: operations take O(n). • AVL (Adelson-Velskii & Landis) trees maintain balance. • For each node in tree, height of left subtree and height of right subtree differ by a maximum of 1. X X H H-2 H-1
10 10 5 20 5 20 43 3 3 1 2 1 3 AVL Trees 5
AVL Trees 12 8 16 4 10 14 2 6
Insertion for AVL Tree • After insert 1 12 8 16 4 10 14 2 6 1
Insertion for AVL Tree • To ensure balance condition for AVL-tree, after insertion of a new node, we back up the path from the inserted node to root and check the balance condition for each node. • If after insertion, the balance condition does not hold in a certain node, we do one of the following rotations: • Single rotation • Double rotation
An insertion into the subtree: P (outside) - case 1 Q (inside) - case 2 An insertion into the subtree: Q (inside) - case 3 R (outside) - case 4 Insertions Causing Imbalance k2 k1 HP=HQ=HR k1 k2 R P P Q Q R
Single Rotation (case 1) HA=HB+1 HB=HC k2 k1 k1 k2 A C A B B C
Single Rotation (case 4) HA=HB HC=HB+1 k2 k1 k1 k2 C A A B B C
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 HQ=HP+1 HP=HR
Double Rotation: Step k3 k3 k1 k2 D D k2 k1 A C B C B A HA=HB=HC=HD
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 HA=HB=HC=HD
Double Rotation k2 k1 k3 k1 k3 A k2 A D B C D B C HA=HB=HC=HD
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-th fibonacci number • S0 = 1 • S1 = 2 • SH = SH-1 + SH-2 + 1 SH-1 SH-2 H H-2 H-1
AVL Tree: analysis (2) • The depth of AVL Trees is at most logarithmic. • So, all of the operations on AVL trees are also logarithmic. • The worst-case height is at most 44 percent more than the minimum possible for binary trees.
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
Further Study • http://telaga.cs.ui.ac.id/WebKuliah/IKI10100/resources/animation/data-structure/avl/avltree.html • Section 19.4 of Weiss book