1 / 15

AVL Trees

AVL Trees. Motivation: we want to guarantee O(log n) running time on the find/insert/remove operations. Idea: keep the tree balanced after each operation. Solution: AVL (Adelson-Velskii and Landis) trees.

blaine
Download Presentation

AVL Trees

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AVL Trees • Motivation: we want to guarantee O(log n) running time on the find/insert/remove 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. TCSS 342 AVL Trees v1.0

  2. 6 4 8 5 1 7 11 AVL tree 3 6 4 8 1 5 7 11 3 not an AVL tree 2 TCSS 342 AVL Trees v1.0

  3. AVL trees: find, insert • AVL tree find is the same as BST find. • AVL insert: same as BST insert, 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? TCSS 342 AVL Trees v1.0

  4. AVL tree insert • Let x be the deepest node where an imbalance occurs. • Four cases to consider. The insertion is in the • left subtree of the left child of x. • right subtree of the left child of x. • left subtree of the right child of x. • right subtree of the right child of x. Idea: Cases 1 & 4 are solved by a single rotation. Cases 2 & 3 are solved by a double rotation. TCSS 342 AVL Trees v1.0

  5. Single rotation example 15 5 20 17 3 10 21 2 4 1 15 3 20 17 2 5 21 1 4 10 TCSS 342 AVL Trees v1.0

  6. Single rotation in general height h+2 before insert a b Z h X Y h h+1 h  -1 X < b < Y < a < Z height h+2 after insert b a X Z h+1 Y h h TCSS 342 AVL Trees v1.0

  7. Cases 2 & 3 height h+2 before insert a b Z h X Y h h+1 h  -1 b a X h Z Y h h+1 single rotation fails TCSS 342 AVL Trees v1.0

  8. Double rotation, step 1 15 8 17 16 4 10 6 3 5 15 8 17 6 16 10 4 3 5 TCSS 342 AVL Trees v1.0

  9. Double rotation, step 2 15 8 17 6 16 10 4 3 5 15 17 6 4 8 16 3 5 10 TCSS 342 AVL Trees v1.0

  10. Double rotation in general height h+2 before insert a b Z h  0 c h W h X Y h-1 h W < b <X < c < Y < a < Z height h+2 after insert c b a X Y Z W h-1 h h h TCSS 342 AVL Trees v1.0

  11. Depth of an AVL tree Theorem: 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. TCSS 342 AVL Trees v1.0

  12. 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 TRbe T’s left and right subtrees. 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. TCSS 342 AVL Trees v1.0

  13. 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. TCSS 342 AVL Trees v1.0

  14. 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 TCSS 342 AVL Trees v1.0

  15. AVL tree: Running times • find takes O(log n) time, because height of the tree is always O(log n). • insert: O(log n) time because we do a find (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. • remove: O(log n) time. Left as an exercise. TCSS 342 AVL Trees v1.0

More Related