avl trees avl trees
play

AVL Trees AVL Trees K08 - PowerPoint PPT Presentation

AVL Trees AVL Trees K08 / 1 Balanced trees Balanced trees O ( h ) We saw that most of the algorithms in BSTs


  1. AVL Trees AVL Trees K08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Κώστας Χατζηκοκολάκης / 1

  2. Balanced trees Balanced trees O ( h ) • We saw that most of the algorithms in BSTs are h = O ( n ) - But in the worst-case • So it makes sense to keep trees “balanced” - Many di�erent ways to de�ne what “balanced” means h = O (log n ) - In all of them: • Eg. complete are one type of balanced tree (see Heaps) - But it's hard to maintain both BST and complete properties together • AVL : a di�erent type of balanced trees / 2

  3. AVL Trees AVL Trees • An AVL tree is a BST with an extra property: ∣height(left-subtree) − height(right-subtree)∣ ≤ 1 For all nodes : • In other words, no subtree can be much shorter/taller than the other • Recall: height is the longest path from the root to some leaf - tree with only a root: height 0 - empty tree: height -1 • Named after Russian mathematicians Adelson-Velskii and Landis / 3

  4. Example – AVL tree Example – AVL tree / 4

  5. Example – AVL tree Example – AVL tree / 5

  6. Example – AVL tree Example – AVL tree / 6

  7. Example – Non-AVL tree Example – Non-AVL tree / 7

  8. Example – Non-AVL tree Example – Non-AVL tree / 8

  9. Example – Non AVL tree Example – Non AVL tree / 9

  10. The The desired property desired property h = O (log n ) • In an AVL tree: - Proving this is not hard • n ( h ) : minimum number of nodes of an AVL tree with height h h ≤ 2 log n ( h ) • We show that - by induction on h - induction works very well on recursive structures! • The base cases hold trivially (why?) - n (0) = 1 - n (1) = 2 / 10

  11. The desired property The desired property • Inductive step h ≤ log n ( h ) h < k - Assume for all 2 h = k - Show that it holds for an AVL tree of height h − 2 • Both subtrees of the root have height at least - because of the AVL property! n ( k ) ≥ 2 n ( k − 2) (1) - So h = k − 2 • Induction hypothesis for k −2 ≤ log n ( k − 2) - 2 (1) log • From we take on both sides and apply the ind. hypothesis k −2 - log n ( k ) ≥ 1 + log n ( k − 2) ≥ 1 + = k 2 2 / 11

  12. Balance factor Balance factor A node can have one of the following “balance factors” Balance factor Meaning Sub-trees have equal heights - 1 Left sub-tree is higher / > 1 Left sub-tree is higher // 1 Right sub-tree is higher \ > 1 Right sub-tree is higher \\ Nodes - , / , \ are AVL. Nodes // , \\ are not AVL. / 12

  13. Example AVL Tree Example AVL Tree − / 13

  14. Example AVL Tree Example AVL Tree / − / 14

  15. Example AVL Tree Example AVL Tree \ / − − / 15

  16. Example AVL Tree Example AVL Tree − − \ − − − / 16

  17. Example AVL Tree Example AVL Tree / − / − − − − − − − / 17

  18. Example non-AVL Tree Example non-AVL Tree // / − / 18

  19. Example non-AVL Tree Example non-AVL Tree \\ − \\ \ − / 19

  20. Example non-AVL Tree Example non-AVL Tree − // \\ / \ − − / 20

  21. Example non-AVL Tree Example non-AVL Tree \\ − − − / 21

  22. Operations in an AVL Tree Operations in an AVL Tree • Same as those of a BST • Except that we need to restore the AVL property - after inserting a node - or deleting a node • We do this using rotations / 22

  23. Recursive AVL restore Recursive AVL restore • Restoring the AVL property is a recursive operation • It happens during an insert or delete - Which are both recursive - When their recursive calls are unwinding towards the root • So when we restore a node , its children are already restored AVL trees r / 23

  24. AVL restore after insert AVL restore after insert • Assume became \\ after an insert (the case // is symmetric) r • Let be the root of the right subtree x - The new value was inserted under (since is \\ ) x r • What can be the balance factor of ? x - \\ and // are not possible since the child is already restored x • Case 1: is \ x - A left-rotation on restores the property! r - Both and become - (easily seen in a drawing) r x / 24

  25. Insert: single left rotation at r Insert: single left rotation at r r \\ − x x \ − r h T h T 3 1 h h T T T h T h 2 3 1 2 New node T ree height h+2 T ree height h+3 New node / 25

  26. AVL restore after insert AVL restore after insert • Case 2: is / x - This is more tricky - A left-rotation on (as before) might cause to become // r x • We need to do a double right-left rotation - First right-rotation on x - Then left-rotation on r • The left-child of becomes the new root w x - w becomes - - r becomes - or / - x becomes - or \ / 26

  27. Insert: double right-left rotation at x and Insert: double right-left rotation at x and r \\ r − w x / r x w h T 1 T T h-1 3 2 T h T T h or 4 h 1 4 T T h-1 2 h 3 or h T ree height h+2 One of T 2 or T 3 has the new node and height h T ree height h+3 / 27

  28. AVL restore after insert AVL restore after insert • Case 3: is - x • This in fact cannot happen ! - Assume both subtrees of have height x h - Then the left subtree of also must have height ( ) r h - Otherwise AVL would be violated before the insert (see the drawings) / 28

  29. Symmetric case Symmetric case • The case when becomes // is symmetric x • We need to consider the BF of its left-child x - x is / : we do a single right rotation at r - x is \ : we do a double left-right rotation at and x r - x is - : impossible / 29

  30. Insert: single right rotation at r Insert: single right rotation at r // r − x x / − r T h 3 T h 1 h T T h 2 1 h T h T 2 3 T ree height h+2 T ree height h+3 New node / 30

  31. Insert: double left-right rotation at x and Insert: double left-right rotation at x and r r // − w \ x x r w T h 4 T T h-1 h T 2 3 T h T 1 h 4 or 1 T T h-1 h 2 3 or h T ree height h+2 One of T 2 or T 3 has the new node and height h T ree height h+3 / 31

  32. Insert example Insert example / 32

  33. Insert example Insert example Inserting BRU, causes single right-rotate at ORY / 32

  34. Insert example Insert example Inserting DUS / 32

  35. Insert example Insert example Inserting ZRH / 32

  36. Insert example Insert example Inserting MEX / 32

  37. Insert example Insert example Inserting ORD / 32

  38. Insert example Insert example Inserting NRT, causes double right-left rotation at ORD and MEX / 32

  39. AVL restore after delete AVL restore after delete • Assume became \\ after an insert (the case // is symmetric) r • Let be the root of the right-subtree x - The value was deleted from the left sub-tree (since is \\ ) r • What can be the balance factor of ? x - \\ and // are not possible since the child is already restored x • Case 1: is \ x - A left-rotation on restores the property! r - Both and become - (easily seen in a drawing) r x / 33

  40. Delete: single left-rotation at r Delete: single left-rotation at r \\ r − x \ x − r h-1 T 1 T h 3 h-1 T h-1 T h-1 2 T T T 1 h 2 3 2 Deleted node Height reduced / 34

  41. AVL restore after delete AVL restore after delete • Case 2: is - x - After a delete this is possible! - A left-rotation on again restores the property r - r becomes \ , becomes / x / 35

  42. Delete: single left-rotation at r Delete: single left-rotation at r \\ r / x − x \ r T h-1 1 T h 3 h-1 T T T 1 h h T 2 3 h 2 Deleted node Height unchanged / 36

  43. AVL restore after delete AVL restore after delete • Case 3: is / x - This is more tricky - A left-rotation on (as before) might cause to become // r x • We need to do a double right-left rotation - First right-rotation on x - Then left-rotation on r • The left-child of becomes the new root w x - w becomes - - r becomes - or / - x becomes - or \ / 37

  44. Delete: double right-left rotation at r Delete: double right-left rotation at r \\ r − w x / r x T h-1 1 w h-1 h-1 or T h-1 T T T h-1 T 4 1 3 4 2 h-2 Deleted h-1 node T T or 2 3 h-2 Height reduced / 38

  45. Delete example Delete example / 39

  46. Delete example Delete example Deleting a, causes single left-rotate at d / 39

  47. Delete example Delete example Deleting m, causes double left-right rotation at d and h / 39

  48. Complexity of operations on AVL trees Complexity of operations on AVL trees O ( h ) • Search on BST is O (log n ) h ≤ 2 log n - So for AVL, since O ( h ) • Insert/delete on BST is O (1) - We add at most on rotation at each step, each rotation is O (log n ) - So also • Interesting fact - During insert at most one rotation will be performed! - Because both rotations we saw decrease the height of the sub-tree / 40

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend