Write a code to construct a Mirror of Binary Tree as below.
Solution 1 ) Create a New Tree and store nodes in the way we want (mirrored way)
Algo :
struct node{ int value; struct node* left; struct node* right; }; struct node *mirrorTree(struct node *root){ struct node *temp; if(root==NULL) return(NULL); temp = (struct node *) malloc(sizeof(struct node)); temp->value = root->value; temp->left = mirrorTree(root->right); temp->right = mirrorTree(root->left); return(temp); }
Solution 2 ) In place change ( Use Recursion )
void mirror(struct node* node) { if (node==NULL) return; else { struct node* temp; mirror(node->left); mirror(node->right); /* swap the pointers */ temp = node->left; node->left = node->right; node->right = temp; } }
See working Code at : http://ideone.com/uDrfeu
See Video :
See Video :