본문 바로가기
Algorithm/LeetCode

[Java] 100. Same Tree

by tabasco 2023. 6. 12.

문제 설명 :

두 TreeNode가 같은지 확인하는 문제이다.

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        }
        if (p == null || q == null) {
            return false;
        }
        if (p.val != q.val) {
            return false;
        }

        return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
    }
}

 

해설 :

이전 문제를 inorder로 풀었기 때문에 이를 활용해서 inorder로 순회한 뒤, 결과를 비교하려 했으나
같은 숫자들로만 구성되어 있는 경우 정확한 비교가 어려웠다. 결국 하나하나 비교하는 방식 + recursive를 활용했다.