Self Balancing Trees Data Structures and Algorithms CSE 373 SP 18 - KASEY CHAMPION 1
Warm Up What will the binary search tree look like if you insert nodes in the following order: 5, 8, 7, 10, 9, 4, 2, 3, 1 What is the pre-order traversal order for the resulting tree? Socrative: www.socrative.com Room Name: CSE373 Please enter your name as: Last, First CSE 373 SP 18 - KASEY CHAMPION 2
Implement Dictionary 10 “foo” Binary Search Trees allow us to: - quickly find what we’re looking for 12 7 - add and remove values easily “ baz ” “bar” Dictionary Operations: Runtime in terms of height, “h” get() – O(h) 15 5 9 put() – O(h) “sup” “ fo ” “ sho ” remove() – O(h) What do you replace the node with? Largest in left sub tree or smallest in right sub tree 1 8 13 “burp” “poo” “boo” CSE 373 SP 18 - KASEY CHAMPION 3
Implementing Put and Remove CSE 373 SP 18 - KASEY CHAMPION 4
Height in terms of Nodes For “balanced” trees h ≈ log c (n) where c is the maximum number of children Balanced binary trees h ≈ log 2 (n) Balanced trinary tree h ≈ log 3 (n) Thus for balanced trees operations take Θ (log c (n)) CSE 373 SP 18 - KASEY CHAMPION 5
Unbalanced Trees 10 Is this a valid Binary Search Tree? Yes, but… We call this a degenerat enerate e tree ee 9 For trees, depending on how balanced they are, Operations at worst can be O(n) and at best 7 can be O(logn) How are degenerate trees formed? - insert(10) 5 - insert(9) - insert(7) - insert(5) CSE 373 SP 18 - KASEY CHAMPION 6
Measuring Balance Measuring balance: For each node, compare the heights of its two sub trees Balanced when the difference in height between sub trees is no greater than 1 8 10 7 8 7 9 8 15 7 7 18 12 CSE 373 SP 18 - KASEY CHAMPION 7
Meet AVL Trees AVL Trees es must satisfy the following properties: - binary trees: all nodes must have between 0 and 2 children - binary search tree: for all nodes, all keys in the left subtree must be smaller and all keys in the right subtree must be larger than the root node - balanced: for all nodes, there can be no more than a difference of 1 in the height of the left subtree from the right. Math.abs(height(left subtree) – height(right subtree)) ≤ 1 AVL stands for Adelson-Velsky and Landis (the inventors of the data structure) CSE 373 SP 18 - KASEY CHAMPION 8
Is this a valid AVL tree? 7 Is it… - Binary yes - BST yes 4 10 - Balanced? yes 5 3 12 9 13 8 11 6 2 14 CSE 373 SP 18 - KASEY CHAMPION 9
Is this a valid AVL tree? 6 Is it… - Binary yes - BST yes 2 8 - Balanced? no Height = 2 Height = 0 4 1 12 7 13 10 5 3 9 11 CSE 373 SP 18 - KASEY CHAMPION 10
Is this a valid AVL tree? 8 Is it… - Binary yes - BST no 6 11 - Balanced? yes 7 2 15 9 > 8 5 9 -1 CSE 373 SP 18 - KASEY CHAMPION 11
Implementing an AVL tree dictionary Dictionary Operations: get() – same as BST containsKey() – same as BST put() - ??? Add the node to keep BST, fix AVL property if necessary remove() - ??? Replace the node to keep BST, fix AVL property if necessary Unbalanced! 1 2 2 1 3 3 CSE 373 SP 18 - KASEY CHAMPION 12
Rotations! Balanced! Unbalanced! a b Insert ‘c’ a b b a X Z X Z Y c Y Z X Y c CSE 373 SP 18 - KASEY CHAMPION 13
Rotations! Balanced! Unbalanced! a b Insert ‘c’ a b b a X Z X Z Y c Y Z X Y c CSE 373 SP 18 - KASEY CHAMPION 14
Practice 15 put(16); 8 22 10 24 19 4 6 3 17 20 16 CSE 373 SP 18 - KASEY CHAMPION 15
Practice 15 put(16); 8 19 17 22 10 4 6 24 3 20 16 CSE 373 SP 18 - KASEY CHAMPION 16
So much can go wrong Unbalanced! Unbalanced! Unbalanced! 3 1 1 3 3 1 Rotate Right Rotate Left 2 2 2 CSE 373 SP 18 - KASEY CHAMPION 17
Two AVL Cases Kink Case Line Case Solve with 2 rotations Solve with 1 rotation 1 1 3 3 2 1 2 3 1 3 2 2 Rotate Right Rotate Left Parent’s left becomes child’s right Rotate subtree right Rotate subtree left Parent’s right becomes child’s left Child’s right becomes its parent Rotate root tree left Rotate root tree Child’s left becomes its parent right CSE 373 SP 18 - KASEY CHAMPION 18
Double Rotations 1 Unbalanced! a a Insert ‘c’ a e d X e W d W e Z d Y Z Y X c Z X X Y c CSE 373 SP 18 - KASEY CHAMPION 19
Double Rotations 2 d Unbalanced! a e a d W e Y X Z W Y c c X Z CSE 373 SP 18 - KASEY CHAMPION 20
Recommend
More recommend