balanced search trees binary search trees binary search
play

Balanced Search Trees Binary Search Trees Binary Search Tree - PowerPoint PPT Presentation

Balanced Search Trees Binary Search Trees Binary Search Tree Binary Search Tree A binary tree is a binary search tree if each element in the left subtree is smaller than the root, each element in the right subtree is larger than the root,


  1. Balanced Search Trees

  2. Binary Search Trees

  3. Binary Search Tree Binary Search Tree A binary tree is a binary search tree if ◮ each element in the left subtree is smaller than the root, ◮ each element in the right subtree is larger than the root, and ◮ the left and the right subtree are binary search trees. r ≤ r ≥ r 3 / 34

  4. Implementation 42 (key, value) parent left / right subtree 4 / 34

  5. Dictionary Dictionary A dictionary is an abstract data type which stores key-value pairs hand has the following operations: ◮ Insert( k , v ) ◮ Find( k ) ◮ Delete( k ) Insert( k , v ) ◮ Inserts a key-value pair ( k , v ) into the dictionary. Find( k ) ◮ Returns a value with the key k . Delete( k ) ◮ Deletes a key-value pair with the key k . 5 / 34

  6. BST – Insert( k , v ) Idea ◮ Find a a free spot in the tree and add a node which stores ( k , v ) . Strategy ◮ Start at root r . ◮ If k < key ( r ) , continue in left subtree. ◮ If k > key ( r ) , continue in right subtree. What if k = key ( r ) ? Runtime ◮ O ( h ) ( h is the height of the tree.) 6 / 34

  7. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 24 7 / 34

  8. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 80 24 7 / 34

  9. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 18 24 80 7 / 34

  10. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 9 24 18 80 7 / 34

  11. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 90 24 18 80 9 7 / 34

  12. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 22 24 18 80 9 90 7 / 34

  13. BST – Insert Example Insert the numbers 22 , 80 , 18 , 9 , 90 , 24 . 24 18 80 9 22 90 7 / 34

  14. BST – Find( k ) Find the node with key k . Strategy ◮ Start at root r . ◮ If k = key ( r ) , return r . ◮ If k < key ( r ) , continue in left subtree. ◮ If k > key ( r ) , continue in right subtree. Runtime ◮ O ( h ) ( h is the height of the tree.) 8 / 34

  15. BST – Find Example Find the number 22 . 22 24 18 80 9 22 90 9 / 34

  16. BST – Delete( k ) Delete the node with key k . Strategy ◮ n := Find( k ) ◮ Let m be the node in the left subtree with the largest key or the node in the right subtree with the smallest key. ◮ Replace n with m . Runtime ◮ O ( h ) ( h is the height of the tree.) 10 / 34

  17. BST – Delete Example Delete the number 24 . 24 18 80 9 22 90 11 / 34

  18. BST – Delete Example Delete the number 24 . 22 18 80 9 90 11 / 34

  19. BST as Dictionary Runtime of all operations is O ( h ) . ◮ What is h in the worst case? Consider inserting the sequence 1 , 2 , . . . , n − 1 , n 1 2 n Thus, worst case height h ∈ O ( n ) . ◮ How do we keep the tree balanced? 12 / 34

  20. Rotation RotateR( y ) y x RotateL( x ) y x γ α γ α β β How do we use this to keep a tree balanced? 13 / 34

  21. Red-Black Trees

  22. Red-Black Tree Red-Black Tree A red-black tree is a binary search tree with the following properties: 0. The root is black. 1. A node is either red or black. 2. All Null -pointers are black. 3. If a node is red, then both its children are black. 4. Every path from a given node n to any of its descendant Null -pointers contains the same number of black nodes. This number is called black-height of n . 15 / 34

  23. Red-Black Tree – Example The tree on the right validates property (0), (1), and (2). (We will ignore Null -pointers from here.) 16 / 34

  24. Red-Black Tree – Example The tree on the right validates property (3). 17 / 34

  25. Red-Black Tree – Example Validation of property (3). 2 2 2 3 18 / 34

  26. Red-Black Tree – Example 2 2 2 2 18 / 34

  27. Red-Black Tree – Height Theorem A red-black tree with n nodes has a height of at most O ( log n ) . 19 / 34

  28. Red-Black Tree – Height h ′ T ′ h T ′ is full. Thus, h ′ ≤ log n . Because h ≤ 2 h ′ , h ≤ 2 log n ∈ O ( log n ) 20 / 34

  29. Red-Black Tree – Insert and Delete Basic Strategy ◮ Use Insert( k , v ) and Delete( k ) as defined for BSTs. ◮ New added nodes are red. ◮ Problem: The resulting tree may violate some properties of a red-black tree. Restoring Red-Black Property ◮ Done by rotation and recolouring. ◮ There are five cases for insertion and six for removal. We will not discuss them here. ◮ General idea: Restore properties for the current layer, move the “incorrectness" to an upper layer, and repeat this on the upper layer. Runtime ◮ O ( log n ) for both operations 21 / 34

  30. Red-Black Tree – Insertion Example Given this red-black tree. We want to insert 4 . 11 2 14 1 7 15 5 8 22 / 34

  31. Red-Black Tree – Insertion Example Given this red-black tree. We want to insert 4 . 11 2 14 1 7 15 5 8 4 22 / 34

  32. Red-Black Tree – Insertion Example Given this red-black tree. We want to insert 4 . 11 RotateL( 2 ) 2 14 1 7 15 5 8 4 22 / 34

  33. Red-Black Tree – Insertion Example Given this red-black tree. We want to insert 4 . 11 RotateR( 11 ) 7 14 2 8 15 1 5 4 22 / 34

  34. Red-Black Tree – Insertion Example Given this red-black tree. We want to insert 4 . 7 2 11 1 5 8 14 4 15 22 / 34

  35. AVL Trees

  36. AVL Tree AVL Tree A binary tree is an AVL tree if, for each node, the height of the left and right subtree differ by at most one. 24 / 34

  37. AVL Tree – Example 1 − 1 1 − 1 0 0 0 25 / 34

  38. AVL Tree – Example 0 − 2 1 − 1 0 0 0 0 0 25 / 34

  39. AVL Tree – Height Theorem An AVL tree with n nodes has a height of at most O ( log n ) . Proof. Let N h be the min. number of nodes in an AVL tree of height h . N h = 1 + N h − 1 + N h − 2 ≥ 2 · N h − 2 ≥ 2 h / 2 Thus, h ≤ 2 log 2 N h , i. e., h ∈ O ( log n ) . � 26 / 34

  40. AVL Tree – Insert and Delete Basic Strategy (similar to red-black trees) ◮ Use Insert( k , v ) and Delete( k ) as defined for BSTs. ◮ Problem: The resulting tree may violate some properties of an AVL tree. Restoring AVL Property ◮ Done by rotation. ◮ General idea: Restore properties for the current layer and repeat this on the upper layer. ◮ We will not discuss the details here. Runtime ◮ O ( log n ) for both operations 27 / 34

  41. AVL Tree – Insertion Example Insert( 55 ) 41 1 − 1 20 65 1 0 11 0 26 0 50 23 29 0 0 28 / 34

  42. AVL Tree – Insertion Example Insert( 55 ) 0 41 − 1 20 65 2 0 11 0 26 − 1 50 23 29 55 0 0 0 28 / 34

  43. AVL Tree – Insertion Example Insert( 55 ) 0 41 − 1 20 65 2 RotateL( 50 ) 0 11 0 26 − 1 50 23 29 55 0 0 0 28 / 34

  44. AVL Tree – Insertion Example Insert( 55 ) 0 41 RotateR( 65 ) − 1 20 65 2 0 11 0 26 1 55 23 29 50 0 0 0 28 / 34

  45. AVL Tree – Insertion Example Insert( 55 ) 41 1 − 1 20 55 0 0 11 0 26 0 50 0 65 23 29 0 0 28 / 34

  46. B-Trees

  47. B-Tree B-Tree A B-Tree is a search tree such that, for some constant t ≥ 2 , (1) each node n stores | n | sorted keys ( t − 1 ≤ | n | ≤ 2 t − 1 ), (2) each node which is not a leaf has | n | + 1 subtrees, and (3) all leaves are on the same layer. The root r is excluded from property (1). Instead, 1 ≤ | r | ≤ 2 t − 1 . 2 11 1 5 7 8 14 15 30 / 34

  48. B-Tree – Splitting and Merging Full nodes (with 2 t − 1 keys) can be slitted. ◮ Remove middle key. ◮ Include it into parent node. c x c m x m n o n o k l k l Neighbouring nodes with t − 1 keys can be merged. ◮ Remove separating key from parent node. ◮ Add it in middle of new node. 31 / 34

  49. B-Tree – Shifting Keys Keys can be shifted to decrease the size of a node and increase the size of its neighbour. c n x c m x p p m o n o k l k l α α 32 / 34

  50. B-Tree – Insertion Idea ◮ Similar to BSTs, find leaf which would contain the key and add it. Problem ◮ What if leaf is full (stores 2 t − 1 keys)? ◮ What if leaf cannot be split because parent is full too? Solution ◮ When searching for leaf, split every full node on the path. Runtime: O ( t · log t n ) ◮ O ( t ) for splitting nodes. ◮ O ( log t n ) for the path from root to leaf. 33 / 34

  51. B-Tree – Deletion Strategy ◮ Search key in tree. ◮ For every node on path, ensure at least t keys are in the node (using merging and shifting). Case 1: Key is in leaf. ◮ Simply delete key. Case 2: Key is not in leaf. ◮ Replace key by k ′ , the largest key in left child or smallest key in right child. ◮ Recursively delete k ′ . Runtime: O ( t · log t n ) ◮ O ( t ) for merging nodes. ◮ O ( log t n ) for the path from root to leaf. 34 / 34

Recommend


More recommend