[LeetCode] Same Tree

아르당·2025년 5월 12일

LeetCode

목록 보기
20/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

두 개의 이진 트리 p와 q가 주어졌을 때, 두 트리가 같은지 아닌지 확인하는 함수를 작성해라.
두 이진 트리는 구조가 동일하고, 노드의 값이 같다면 동일하다고 간주한다.

Example

#1

Input: p = [1, 2, 3], q = [1, 2, 3]
Output: true

#2

Input: p = [1, 2], q = [1, null, 2]
Output: false

#3

Input: p = [1, 2, 1], q = [1, 1, 2]
Output: fasle

Constraints

  • 두 트리의 노드 숫자는 0에서 100까지 범위 안에 있다.
  • -10^4 <= Node.val <= 10^4

Problem

이 문제에서도 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 Soultion {
	public boolean isSameTree(TreeNode p, TreeNode q) {
    
    }
}

매개변수로 TreeNode p, TreeNode q가 주어진다. 먼저 p와 q가 null인지 확인한다. 둘 중 하나라도 null이면 두 트리가 같지 않기 때문이다.

public boolean isSameTree(TreeNode p, TreeNode q) {
	if(p == null && q == null){
    	return true;
    }else if(p == null || q == null){
    	return false;
    }
}

이 경우가 통과될 경우 각 노드의 val을 비교해서 같다면 isSameTree를 다시 호출하여 두 트리의 각각 왼쪽, 오른쪽 노드를 비교한다.

if(p.val == q.val){
	return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}else{
	return false;
}

All Code

/**
 * 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;
        }else if(p == null || q == null){
            return false;
        }

        if(p.val == q.val){
            return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
        }else{
            return false;
        }
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글