<Easy> Symmetric Tree (LeetCode : C#)

이도희·2023년 4월 13일
0

알고리즘 문제 풀이

목록 보기
54/185

https://leetcode.com/problems/symmetric-tree/

📕 문제 설명

이진 트리의 root가 주어질 때 왼쪽 자식과 오른쪽 자식이 symmetric 한지 반환하기 (즉, mirroring 된 것 처럼 반 접었을 때 같은 지)

  • Input
    이진 트리의 root
  • Output
    둘이 symmetric 한지 반환 (bool)

예제

풀이

예제를 보면 결국 왼쪽 자식의 왼쪽 노드와 오른쪽 자식의 오른쪽 노드, 왼쪽 자식의 오른쪽 노드와 오른쪽 자식의 왼쪽 노드가 같으면 되는 것을 확인할 수 있다.

same tree와 유사하게 재귀로 노드 타고 가면서 해당 조건의 여부에 따라 결과를 반환한다.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int val=0, TreeNode left=null, TreeNode right=null) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
public class Solution {
    public bool IsSymmetric(TreeNode root) {

        return IsMirrored(root, root);
        
    }

    public bool IsMirrored(TreeNode t1, TreeNode t2)
    {
        if (t1 == null && t2 == null) return true;
        if (t1 == null || t2 == null) return false;
        if (t1.val != t2.val) return false;

        return IsMirrored(t1.left, t2.right) && IsMirrored(t1.right, t2.left);
    }
}

결과

profile
하나씩 심어 나가는 개발 농장🥕 (블로그 이전중)

0개의 댓글