Understanding the Problem
We are given two binary trees and asked to determine whether they are mirror images of each other. This means that the structure and values of one tree must exactly reflect those of the other, but in a mirrored way. Specifically, for every node in the first tree, its left child must match the right child of the corresponding node in the second tree, and vice versa.
This problem is common in recursion-based tree problems and tests your ability to compare tree structures and values symmetrically.
Step-by-Step Solution with Example
Step 1: Understand the Mirror Concept
Two trees are mirrors if:
- They are both empty (null)
- Or, their root nodes have equal values, and their left and right subtrees are mirrors of each other in opposite directions
Step 2: Use a Recursive Approach
The simplest and cleanest way to solve this is using recursion. We define a function isMirror(tree1, tree2)
that checks:
- If both trees are null, return true
- If only one is null, return false
- If values don't match, return false
- Recursively check
isMirror(tree1.left, tree2.right)
and isMirror(tree1.right, tree2.left)
Step 3: Apply the Approach to an Example
Let’s take two trees:
Tree A Tree B
1 1
/ / 2 3 3 2
We compare:
- Roots: 1 == 1 ✅
- Left of A (2) with Right of B (2) ✅
- Right of A (3) with Left of B (3) ✅
All checks pass recursively, so these trees are mirror images.
Step 4: Implement the Code
boolean isMirror(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) return true;
if (t1 == null || t2 == null) return false;
if (t1.val != t2.val) return false;
return isMirror(t1.left, t2.right) && isMirror(t1.right, t2.left);
}
Edge Cases
Case 1: Both Trees Are Empty
Two null trees are mirrors by definition. Return true
.
Case 2: One Tree is Empty
One null and one non-null tree can never be mirrors. Return false
.
Case 3: Different Root Values
If the roots are not equal, trees can't be mirrors. Check t1.val != t2.val
.
Case 4: Matching Roots, Unmatched Subtrees
Even if roots match, if the left and right children don't mirror each other in structure and value, return false
.
Case 5: Single Node Trees
If both trees are single nodes with the same value, they are mirrors. If either node has children and the other doesn’t, they’re not mirrors.
Finally
This problem teaches the power of recursion and symmetry. The key idea is to mirror the traversal — compare left of one with right of the other and continue down the tree. Always consider the base cases carefully, and remember to match both structure and value. With these principles, you can confidently identify mirror trees!
Comments
Loading comments...