Leetcode Java Same Tree

업데이트:

문제

Link

코드

/**
 * 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;
    } else if (p.val == q.val) {
      return this.isSameTree(p.left, q.left) && this.isSameTree(p.right, q.right);
    } else {
      return false;
    }
  }

}

결과

Link

설명

  1. 주어진 TreeNode인 p와 q가 동일한 구조와 값을 가지고 있는지 검증하는 문제이다.

  2. 재귀 호출을 통해 p와 q가 동일한 구조와 값을 가지고 있는지 검증하여 결과를 주어진 문제의 결과로 반환한다.

    • p와 q가 null인 경우 TreeNode의 끝이 동일하므로, true를 반환한다.
    • p가 null이거나 q가 null인 경우 TreeNode의 끝이 다르므로, false를 반환한다.
    • p의 val 값과 q의 val 값이 동일하면 재귀 호출을 통해 p와 q의 left와 right를 각각 동일한 구조인지 다시 검증한 결과의 AND(논리곱) 결과를 반환한다.
    • 그 외의 경우는 p와 q의 값이 다른 경우이므로, false를 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기