Download presentation

Presentation is loading. Please wait.

Published byEileen Worman Modified over 2 years ago

1
Rotating Nodes How to balance a node that has become unbalanced after the addition of one new node.

2
Detect Imbalance If ( a new node is added to either of node N's children ) rebalance( N )

3
Node rebalance( Node N ) int diff = N.left.getHeight() - N.right.getHeight(); if ( diff > 1 ) if ( N.left.left.getHeight() > N.left.right.getHeight() ) N = rotateRight( N ) else N = rotateLeftRight( N ) else if ( diff < -1 ) if ( N.right.right.getHeight() > N.right.left.getHeight() ) N = rotateLeft( N ) else N = rotateRightLeft( N ) // else, no rebalancing necessary return N

4
Balanced Search Trees 6060 7575 40 50 705 85 4520 6060 7575 50 705 85 6060 6565 50 5

5
UnBalanced Search Trees 6060 50 5 6060 7575 40 50 20 2525 6060 7575 50 6585 7070 3 2 2

6
Unbalanced as result of adding a new node to the left subtree of the left subtree return results of a single rotate right 45 50 40 unbalanced Node rotateRight( Node nodeN ) nodeC = nodeN.left nodeN.left = nodeC.right nodeC.right = nodeN return nodeC nodeN nodeC balanced 45 50 40

7
Unbalanced as result of adding a new node to the right subtree of the right subtree return results of a single rotate left 45 40 50 unbalanced Node rotateLeft( Node nodeN ) nodeC = nodeN.right nodeN.right = nodeC.left nodeC.left = nodeN return nodeC nodeN nodeC balanced 45 50 40

8
Unbalanced as result of adding a new node to the left subtree of the right subtree return results of a right-left rotate Node rotateRightLeft( Node nodeN ) nodeC = nodeN.right nodeN.right = rotateRight(nodeC) return rotateLeft(nodeN) 50 40 45 unbalanced nodeN nodeC balanced 45 40 50 45 50 40

9
Unbalanced as result of adding a new node to the right subtree of the left subtree return results of a left-right rotate Node rotateLeftRight( Node nodeN ) nodeC = nodeN.left nodeN.left = rotateLeft(nodeC) return rotateRight(nodeN) balanced 40 50 45 unbalanced nodeN nodeC 45 50 40 45 50 40

Similar presentations

OK

AVL Search Trees Inserting in an AVL tree Insertion implementation Deleting from an AVL tree.

AVL Search Trees Inserting in an AVL tree Insertion implementation Deleting from an AVL tree.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google