Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null) {
return true;
}
return isSymmetric(root.left, root.right);
}
private boolean isSymmetric(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) {
return true;
}
if (t1 == null || t2 == null) {
return false;
}
//값이 같고, 서브트리끼리도 같으면 대칭
return (t1.val == t2.val) && isSymmetric(t1.left, t2.right) && isSymmetric(t1.right, t2.left);
}
}
대칭을 찾는 문제라 좌우의 값만 비교하면 돼서 쉽게 풀 수 있었다. 문제의 포인트는 부모 트리의 값이 널이 아니면 좌우를 비교해서 같을 때만 참을 반환하는 것 같다.
영어 문제는 항상 당황스럽다. 그래서 이번에는 영어를 읽지 않고 예제를 먼저 보았다. 그랬더니 바로 이해해서 다음에도 예제샘플을 봐야겠다....