1 / 16

AVL trees

AVL trees. Today. AVL Deletes and rotations, then testing your knowledge of these concepts! Before I get into details, I want to show you some animated operations in an AVL tree. I think it’s important to just get the gears turning in your mind.

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

  2. Today • AVL Deletes and rotations, then testing your knowledge of these concepts! • Before I get into details, I want to show you some animated operations in an AVL tree. • I think it’s important to just get the gears turning in your mind. • We’ll look at some animations again after we study (some) details. • Interactive web applet

  3. AVL tree • Is a binary search tree • Has an additional height constraint: • For each node x in the tree, Height(x.left) differs from Height(x.right) by at most 1 • I promise: • If you satisfy the height constraint, then the height of the tree is O(lg n). • (Proof is easy, but no time! =])

  4. AVL tree • To be an AVL tree, must always: • (1) Be a binary search tree • (2) Satisfy the height constraint • Suppose we start with an AVL tree, then delete as if we’re in a regular BST. • Will the tree be an AVL tree after the delete? • (1) It will still be a BST… that’s one part. • (2) Will it satisfy the height constraint? • (Not covering insert, since you already did in class)

  5. BST Delete breaks an AVL tree 7 7 Delete(9) 9 4 4 3 3 h(left) > h(right)+1 so NOT an AVL tree!

  6. Balance factors • To check the balance constraint, we have to know the heighth of each node • Or do we? • In fact, we can store balance factors instead. • The balance factor bf(x) = h(x.right) – h(x.left) • bf(x) values -1, 0, and 1 are allowed. • If bf(x) < -1 or bf(x) > 1 then tree is NOT AVL

  7. Same example with bf(x), not h(x) 7 7 -2 -1 Delete(9) 9 4 4 -1 -1 0 3 3 0 0 bf < -1 soNOT an AVL tree!

  8. What else can BST Delete break? • Balance factors of ancestors… 7 7 0 -1 -1 Delete(3) 9 9 4 4 0 -1 -1 0 0 3 0

  9. Need a new Delete algorithm • We are starting to see what our delete algorithm must look like. • Goal: if tree is AVL before Delete, then tree is AVL after Delete. • Step 1: do BST delete. • This maintains the BST property,but can BREAK the balance factors of ancestors! • Step 2: fix the balance constraint. • Do something that maintains the BST property,but fixes any balance factors that are < -1 or > 1.

  10. Bad balance factors • Start with an AVL tree, then do a BST Delete. • What bad values can bf(x) take on? • Delete can reduce a subtree’s height by 1. • So, it might increase or decrease h(x.right) – h(x.left) by 1. • So, bf(x) might increase or decrease by 1. • This means: • if bf(x) = 1 before Delete, it might become 2. BAD. • If bf(x) = -1 before Delete, it might become -2. BAD. • If bf(x) = 0 before Delete, then it is still -1, 0 or 1. OK. 2 cases

  11. Problematic cases for Delete(a) • bf(x) = -2 is just symmetric to bf(x) = 2. • So, we just look at bf(x) = 2. x x -2 2 h h+2 a a

  12. Delete(a): 3 subcases for bf(x)=2 • Since tree was AVL before, bf(z) = -1, 0 or 1 Case bf(z) = 0 Case bf(z) = 1 x x 2 2 z z T1 T1 0 1 h a a T2 T2 T3 T3 h h+1

  13. Delete(a): final subcase for bf(x)=2 Case bf(z) = -1: we have 3 subcases. (More details) Case bf(y) = 0 Case bf(y) = -1 Case bf(y) = 1 x x x 2 2 2 z z z T1 T1 T1 -1 -1 -1 h y y y a 0 a a -1 1 T3 T3 T3 h T21 T22 T21 T22 T21 T22 h-1 h

  14. Fixing case bf(x) = 2, bf(z) = 0 • We do a single left rotation • Preserves the BST property, and fixes bf(x) = 2 x z 2 -1 z x T3 T1 0 1 h T2 T2 T3 T1 h+1

  15. Fixing case bf(x) = 2, bf(z) = 1 • We do a single left rotation (same as last case) • Preserves the BST property, and fixes bf(x) = 2 x z 2 0 z x T3 T1 1 0 h T2 T2 T3 T1 h h+1

  16. Interactive AVL Deletes • Interactive web applet • Video of this applet being used to show most cases for insert / delete

More Related