Given a Binary Tree, write a function which will convert that tree to its Mirror Tree. For Example: If the Binary Tree is
1 / \ 2 3 / \ 4 5
Then the Mirror is
1 / \ 3 2 / \ 5 4
As I have written in my earlier posts also, Tree problems are better solved using recursion (But recursion comes with its side effect). Finding the Mirror can also be visualized recursively.
Algorithm:
Step 1. Compute Mirror of Left Sub-Tree
Step 2. Compute Mirror of Right Sub-Tree
Step 3. swap the left and right subtree values
Code:
void mirrorTree(Node* root) { if (!root) return; mirrorTree(root->lptr); mirrorTree(root->rptr); // swap the left & right pointers Node* temp = root->lptr; root->lptr = root->rptr; root->rptr = temp; }