https://leetcode.com/problems/same-tree/description/
두 개의 트리가 완전히 동일한지 체크하는 문제다.
같은 기준으로 잡고 재귀로 풀어내면 될 거라고 생각했다.
탈출조건은 아래와 같다
이제 같은 기준으로 서로의 left, 서로의 rigth 탐색해주고 동일여부 체크하면 된다.
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (q == null || p == null) {
return false;
}
if (q.val != p.val) {
return false;
}
boolean left = isSameTree(p.left, q.left);
boolean right = isSameTree(p.right, q.right);
return left && right;
}
}
굳이 개선할 점을 찾아보자면 left, right boolean 임시변수를 할 필요는 없다는 것이다.
더불어 자바에서 && 평가 시 왼쪽이 참이 아니면 오른쪽은 수행하지 않으므로
그냥 임시변수 없이 아래와 같이 해두는게 성능에 미미하게 유리할 수 있다.
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);