3.1K
Question: Given 2 binary trees, determine if they are mirror of each other
Input: 2 tree pointers are given. (Root pointer)
Output: TRUE
We can again apply the recursive sub-structure property of the tree here. The algorithm can be implemented as:-
#include<stdio.h>
#include<malloc.h>
struct binaryTreeNode{
int data;
struct binaryTreeNode * left;
struct binaryTreeNode * right;
};
int areTreeMirrors(struct binaryTreeNode * root1, struct binaryTreeNode * root2)
{
// Terminating condition
if(root1 == NULL && root2 == NULL)
return 1;
//If one of them is NULL, then they are definitely not mirrors
if(root1 == NULL || root2 == NULL)
return 0;
//If one of them is different, then also they are not mirrors
if(root1 -> data != root2 -> data)
{
return 0;
}
else
{
// Compare the left and right nodes of the trees
return (areTreeMirrors(root1 -> left, root2 -> right) && areTreeMirrors(root1 -> right, root2 -> left));
}
}
Time Complexity:- O(n)
Space Complexity:- O(n) due to a recursive stack

