Mirroring a Binary Tree


public static void mirror( Node root ) {

 Stack<Node> nodes = new Stack<Node>( );
 nodes.push( root );

 while( ! nodes.empty( ) ) {

 Node currentNode = nodes.pop( );

 // Traverse the left subtree.
 if( currentNode.left != null ) {
 nodes.push( currentNode.left );
 }

 // Traverse the right subtree.
 if( currentNode.right != null ) {
 nodes.push( currentNode.right );
 }

 // Swap the left node with the right node.
 Node tempNode = currentNode.left;
 currentNode.left = currentNode.right;
 currentNode.right = tempNode;
 }
 }

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: