VIEWS: 2 PAGES: 54 POSTED ON: 1/9/2013
Data Structure and Algorithm (CS-102) Ashok K Turuk Consider the insertion of following element A, B, C, , ….,X, Y, Z into the BST A O(N) B C X Y Z Consider the insertion of following element Z, X, Y, , ….,C, B, A into the BST Z X Y O(N) C B A Balanced binary tree • The disadvantage of a binary search tree is that its height can be as large as N-1 • This means that the time needed to perform insertion and deletion and many other operations can be O(N) in the worst case • We want a tree with small height • A binary tree with N node has height at least (log N) • Thus, our goal is to keep the height of a binary search tree O(log N) • Such trees are called balanced binary search trees. Examples are AVL tree, red-black tree. AVL tree Height of a node • The height of a leaf is 1. The height of a null pointer is zero. • The height of an internal node is the maximum height of its children plus 1 AVL tree • An AVL tree is a binary search tree in which – for every node in the tree, the height of the left and right subtrees differ by at most 1. – An empty binary tree is an AVL tree AVL tree TL left subtree of T h(TL ) Height of the subtree TL TR Right subtree of T h(TR ) Height of the subtree TR T is an AVL tree iff TL and TR are AVL tree and |h(TL ) - h(TR ) | <= 1 h(TL ) - h(TR ) is known as balancing factor (BF) and for an AVL tree the BF of a node can be either 0 , 1, or -1 AVL Search Tree (-1) C G (1) (0) A D (0) Insertion in AVL search Tree Insertion into an AVL search tree may affect the BF of a node, resulting the BST unbalanced. A technique called Rotation is used to restore he balance of the search tree AVL Search Tree (-1) C G (1) (0) A D (0) E AVL Search Tree (-2) C G (2) (0) A D (-1) E (0) Rotation To perform rotation – Identify a specific node A whose BF(A) is neither 0, 1, or -1 and which is the nearest ancestor to the inserted node on the path from the inserted node to the root Rotation Rebalancing rotation are classified as LL, LR, RR and RL LL Rotation: Inserted node is in the left sub-tree of left sub-tree of node A RR Rotation: Inserted node is in the right sub-tree of right sub-tree of node A LR Rotation: Inserted node is in the right sub-tree of left sub-tree of node A RL Rotation: Inserted node is in the left sub-tree of right sub-tree of node A LL Rotation (+1) (+2) A A Insert X into BL (0) B (+1) B AR AR h c h+1 h c BL BR x BL BR BL : Left Sub-tree of B Unbalanced AVL BR : Right Sub-tree of B search tree after AR : Right Sub-tree of A insertion h : Height LL Rotation (+2) A (0) B (0) (+1) B LL Rotation A h+1 AR x BL c h AR h+1 h c x BR BL BR Unbalanced AVL search tree after Balanced AVL insertion search tree after rotation LL Rotation Example (+1) (+2) 96 96 (0) (0) (+1) (0) Insert 36 85 110 85 110 (0) (+1) (0) (0) 64 90 64 90 (0) 36 Unbalanced AVL search tree LL Rotation Example (+2) (0) 96 85 (0) (0) (+1) (+1) 85 LL Rotation 64 96 110 (+1) (0) (0) (0) 36 90 (0) 110 64 90 (0) 36 Unbalanced VAL search Balanced AVL search tree tree after LL rotation RR Rotation (-1) (-2) A Insert X A into BR (-1) B (0) B h AL h c c h+1 AL BL BR x BL BR Unbalanced AVL search tree after insertion RR Rotation (-2) (0) A RR Rotation B (-1) B (0) AL A c h+1 c h+1 x h x BL BR BL BR AL Unbalanced AVL search tree after Balanced AVL insertion search tree after Rotation RR Rotation Example (-1) (-2) 34 34 (0) (0) (0) (-1) Insert 65 26 44 26 44 (0) (0) (0) (-1) 40 56 40 56 (0) 65 Unbalanced AVL search tree RR Rotation Example (-2) (-2) 34 44 (0) (-1) RR (-1) Rotation (0) 26 44 34 56 (0) (-1) (0) (0) (0) 40 56 26 40 65 (0) 65 Balanced AVL search tree after RR rotation LR Rotation (+2) A (+1) (-1) A (-1) B B (-1) Insert X into CL C C (0) h h c c x BL CL BL CL CR AR CR AR Unbalanced AVL search tree after insertion LR Rotation (0) A (+2) (0) C (-1) (-1) B B LR Rotation A (-1) C h h x c CL c CR BL BL x AR AR CL CR Balanced AVL search tree after LR Rotation LR Rotation Example (+1) (+2) 44 44 (0) (0) (-1) (0) Insert 37 30 76 30 76 (0) (+1) (0) (+1) 16 39 16 39 37 (0) Unbalanced AVL search tree LR Rotation Example (+2) (0) 44 39 (-1) (0) (0) (-1) LR Rotation 30 76 30 44 (0) (0) (+1) (0) 16 39 16 37 76 (0) (0) 37 Balanced AVL search tree (-1) RL Rotation A (0) (-2) B A (+1) Insert X h (0) into CR B C h (-1) h C AL c h CL CR AL c BR x CL CR BR Unbalanced AVL search tree after insertion (-2) RL Rotation A (+1) (0) B C (0) RL Rotation h (-1) B C (+1) A h c AL c h x h x CL CR BR CR CL AL BR Balanced AVL search tree after RL Rotation RL Rotation Example (-1) (-2) 34 34 (0) (0) (0) (+1) Insert 41 26 44 26 44 (0) (0) (-1) (0) 40 56 40 56 (0) 41 Unbalanced AVL search tree RL Rotation Example (-2) (0) 34 40 (0) (+1) RL Rotation (+1) (0) 26 44 34 44 (-1) (0) (0) 26 (0) (0) 40 56 41 56 (0) 41 Balanced AVL search tree AVL Tree Construct an AVL search tree by inserting the following elements in the order of their occurrence 64, 1, 14, 26, 13, 110, 98, 85 (+1) Insert 64, 1 64 (0) 1 (0) Insert 14 (+2) 14 64 LR (0) (0) (-1) 1 1 64 14 (0) (0) Insert 26, 13, 110,98 14 (0) (0) (-1) 1 64 14 (-1) (-1) 1 (0) 64 (+1) 13 (0) 110 26 (0) 98 Insert 85 (-1) (-2) 14 LL 14 (-1) (-1) (-2) (-1) 1 (0) 64 1 (0) 64 (+2) (0) 13 13 (0) 110 (0) 98 26 26 (0) (+1) (0) 110 98 85 85 (0) Deletion in AVL search Tree Deletion in AVL search tree proceed the same way as the deletion in binary search tree However, in the event of imbalance due to deletion, one or more rotation need to be applied to balance the AVL tree. AVL deletion Let A be the closest ancestor node on the path from X (deleted node) to the root with a balancing factor +2 or -2 Classify the rotation as L or R depending on whether the deletion occurred on the left or right subtree of A AVL Deletion Depending on the value of BF(B) where B is the root of the left or right subtree of A, the R or L imbalance is further classified as R0, R1 and R -1 or L0, L1 and L-1. R0 Rotation (+1) (+2) A A Delete node X (0) B (0) B h AR AR x h c h c h -1 BL BR BL BR Unbalanced AVL search tree after deletion of node x R0 Rotation (+2) (-1) B A (+1) (0) B R0 Rotation A AR BL c h AR h c BF(B) == 0, use BL BR R0 rotation BR Unbalanced AVL search tree after Balanced AVL deletion of x search tree after rotation R0 Rotation Example (+1) (+2) 46 46 (0) (-1) (0) 20 Delete 60 (0) 54 20 54 (+1) (0) (-1) (+1) 18 23 60 18 23 (-1) (0) 7 (0) 24 (0) 7 (0) 24 Unbalanced AVL search tree after deletion R0 Rotation Example (+2) (-1) 46 20 (0) (0) (+1) R0 (+1) 20 54 18 46 (+1) (-1) (0) (-1) 18 23 7 23 (0) 54 (0) 7 (0) 24 (0) 24 Balanced AVL search tree after deletion R1 Rotation (+1) (+2) A A Delete node X (+1) B (+1) B h AR h -1 AR x h c h -1 h c h -1 BL BR BL BR Unbalanced AVL search tree after deletion of node x R1 Rotation (+2) A (0) B (0) (+1) B R1 Rotation A h -1 AR BL c h-1 A h c h -1 BF(B) == 1, use R BL BR R1 rotation BR Balanced AVL search tree after rotation R1 Rotation Example (+1) (+2) 37 37 (+1) (+1) (0) Delete 39 (+1) 26 41 26 41 (+1) 39 (0) (+1) 18 28 18 28 (0) (0) (0) 16 (0) 16 Unbalanced AVL search tree after deletion R1 Rotation Example (+2) (0) 37 26 (+1) (0) (0) R1 Rotation (+1) 26 41 18 37 (+1) (0) (0) 18 28 (0) 16 28 (0) 41 (0) 16 Balanced AVL search tree after deletion R-1 Rotation (+2) A (+1) (-1) A (-1) B B (0) Delete X C h-1 C (0) h h-1 c c AR x BL CL BL CL CR AR CR Unbalanced AVL search tree after deletion R-1 Rotation (0) A (+2) (0) C (-1) B B h -1 (0) A R -1 h -1 h -1 C (0) c h-1 BL CL c BF(B) == -1, CR AR BL CL CR AR use R-1 rotation Balanced AVL search tree after Rotation R-1 Rotation Example (+1) (+2) 44 44 (-1) (-1) Delete 52 (-1) (0) 22 48 22 48 (0) (0) (0) 52 (0) 18 28 18 28 23 29 29 23 (0) Unbalanced AVL search tree after deletion R-1 Rotation Example (+1) (0) 44 28 (-1) (-1) R-1 (0) (0) 22 48 22 44 (0) (0) (0) (0) (0) 52 48 18 28 18 23 29 23 29 Balanced AVL search tree after rotation L0 Rotation (-1) (-2) A Delete X A (0) B (0) h-1 B h AL x h c h c AL BL BR BL BR Unbalanced AVL search tree after deletion L0 Rotation (-1) (+1) A Delete X B (0) h -1 B (0) (-1) h c AL A h c BR h-1 AL BL BR BL Balanced AVL search tree after deletion L1 Rotation (-1) (-2) A Delete X A (+1) B (+1) h-1 B h (0) AL (0) c h-1 C h-1c x C AL BR BR h-1 CL CR Unbalanced AVL CL CR search tree after deletion L1 Rotation (-2) (0) A C L1 (0) (0) B (+1) B h-1 A (0) c h-1 C h-1c AL h-1 BR BR h-1 AL CL CR Unbalanced AVL CL CR search tree after deletion L-1 Rotation (-1) (-2) A Delete X A (-1) B (-1) h-1 B h h-1 AL h-1 x c h c h AL BL BR BL BR Unbalanced AVL search tree after deletion L-1 Rotation (-2) (0) A Delete X B (-1) B (-1) h-1 h-1 A c h c h AL BL BR h-1 B AL L BR Balanced AVL search tree after deletion