Download presentation

Presentation is loading. Please wait.

Published byLexi Cottrill Modified over 3 years ago

1
AVL-Trees (Part 2: Double Rotations) Lecture 19 COMP171 Fall 2006

2
AVL Trees / Slide 2 Review of Rotations When the AVL property is lost we can rebalance the tree via rotations * Single Right Rotation (SRR) n Performed when A is unbalanced to the left (the left subtree is 2 higher than the right subtree) and B is left- heavy (the left subtree of B is 1 higher than the right subtree of B). A BT3 T1 T2 SRR at A B A T3 T1 T2

3
AVL Trees / Slide 3 Rotations * Single Left Rotation (SLR) n performed when A is unbalanced to the right (the right subtree is 2 higher than the left subtree) and B is right-heavy (the right subtree of B is 1 higher than the left subtree of B). A T1B T2 T3 SLR at A B A T3 T1T2

4
AVL Trees / Slide 4 Rotations * Double Left Rotation (DLR) n Performed when C is unbalanced to the left (the left subtree is 2 higher than the right subtree), A is right-heavy (the right subtree of A is 1 higher than the left subtree of A) n Consists of a single left rotation at node A, followed by a single right at node C C AT4 T1B SLR at A C BT4 AT3 T2T3T1T2 B AC T1T2 SRR at C T3T4 DLR = SLR + SRR Note: this is case 1

5
AVL Trees / Slide 5 Rotations * Double Right Rotation (DRR) n Performed when A is unbalanced to the right (the right subtree is 2 higher than the left subtree), C is left heavy (the left subtree of C is 1 higher than the right subtree of C) n Consists of a single right rotation at node C, followed by a single left rotation at node A A T1C BT4 SRR at C A T1B T2C T3 T4 B AC T1T2 SLR at A T3T4 DRR = SRR + SLR Note: this is case 4!

6
AVL Trees / Slide 6 Recall Cases 2&3 * Single rotation fails to fix case 2&3 * Take case 2 as an example (case 3 is a symmetric to it ) n The problem is that the subtree Y is too deep n Single rotation doesn’t make Y any less deep… Single rotation failsCase 2: violation in k2 because of insertion in subtree Y

7
AVL Trees / Slide 7 Double Rotation * Facts n The new key is inserted in the subtree B or C n The AVL-property is violated at k 3 n k 3 -k 1 -k 2 forms a zig-zag shape: LR case * Solution n place k 2 as the new root Double rotation to fix case 2

8
AVL Trees / Slide 8 Double Rotation to fix Case 3(right-left) * Facts n The new key is inserted in the subtree B or C n The AVL-property is violated at k 1 n k 1 -k 3 -k 2 forms a zig-zag shape * Case 3 is a symmetric case to case 2 Double rotation to fix case 3

9
AVL Trees / Slide 9 * Restart our example We’ve inserted 3, 2, 1, 4, 5, 6, 7, 16 We’ll insert 15, 14, 13, 12, 11, 10, 8, 9 4 2 6 731 5 16 15 Insert 16, fine Insert 15 violation at node 7 4 2 6 1531 5 167 Double rotation k1 k3 k2 k1k3

10
AVL Trees / Slide 10 4 2 6 1531 5 167 14 Insert 14 k1 k3 k2 4 2 7 1531 6 1614 Double rotation k2 k3 5 k1 A C D 4 2 7 1531 6 1614 5 Insert 13 13 7 4 15 1662 14 135 31 Single rotation k1 k2 Z X Y

11
AVL Trees / Slide 11 7 4 15 1662 14 135 31 12 Insert 12 7 4 15 1662 13 125 3114 Single rotation 7 4 15 1662 13 125 3114 11 Insert 11 7 4 13 1562 12 115 3116 Single rotation 14

12
AVL Trees / Slide 12 7 4 13 1562 12 115 3116 14 Insert 10 10 7 4 13 1562 11 105 3116 14 Single rotation 12 7 4 13 1562 11 105 3116 1412 8 9 Insert 8, fine then insert 9 7 4 13 1562 11 85 3116 1412 9 Double rotation 10

13
AVL Trees / Slide 13 Insertion Analysis * Insert the new key as a new leaf just as in ordinary binary search tree: O(logN) * Then trace the path from the new leaf towards the root, for each node x encountered: O(logN) n Check height difference: O(1) n If satisfies AVL property, proceed to next node: O(1) n If not, perform a rotation: O(1) * The insertion stops when n A rotation is performed n Or, we’ve checked all nodes in the path * Time complexity for insertion O(logN) logN

14
AVL Trees / Slide 14 Deletion from AVL Tree * Delete a node x as in ordinary binary search tree n Note that the last (deepest) node in a tree deleted is a leaf or a node with one child * Then trace the path from the new leaf towards the root * For each node x encountered, check if heights of left(x) and right(x) differ by at most 1. n If yes, proceed to parent(x) n If no, perform an appropriate rotation at x Continue to trace the path until we reach the root

15
AVL Trees / Slide 15 Deletion Example 1 Delete 5, Node 10 is unbalanced Single Rotation 20 1035 40155 25 18 45 3830 50 20 1535 401810 25 45 3830 50

16
AVL Trees / Slide 16 Cont’d For deletion, after rotation, we need to continue tracing upward to see if AVL-tree property is violated at other node. 20 1535 401810 25 45 3830 50 20 15 35 40 1810 25 45 38 30 50 Continue to check parents Oops!! Node 20 is unbalanced!! Single Rotation

17
AVL Trees / Slide 17 Rotation in Deletion * The rotation strategies (single or double) we learned can be reused here * Except for one new case: two subtrees of y are of the same height in that case, a single rotation is ok rotate with right child rotate with left child

18
AVL Trees / Slide 18 Deletion Example 2 Double rotation Right most child of left subtree = I Ok here!

19
AVL Trees / Slide 19 Example 2 Cont’d New case

Similar presentations

OK

Binary Search Trees Data Structures & Problem Solving Using JAVA Second Edition Mark Allen Weiss Chapter 19 (continued) © 2002 Addison Wesley.

Binary Search Trees Data Structures & Problem Solving Using JAVA Second Edition Mark Allen Weiss Chapter 19 (continued) © 2002 Addison Wesley.

© 2018 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google