(Tree, Easy) Same Tree

송재호·2025년 8월 10일
0

https://leetcode.com/problems/same-tree/description/

두 개의 트리가 완전히 동일한지 체크하는 문제다.
같은 기준으로 잡고 재귀로 풀어내면 될 거라고 생각했다.

탈출조건은 아래와 같다

  • 둘다 null이면 같은 것이므로 true
  • 둘 중 한 쪽만 null이면 다른 것이므로 false
  • 둘의 값이 다르면 다른 것이므로 false

이제 같은 기준으로 서로의 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);
profile
식지 않는 감자

0개의 댓글