Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

101. Symmetric Tree (대칭 트리) 본문

코딩 테스트/LeetCode

101. Symmetric Tree (대칭 트리)

포카리tea 2023. 5. 12. 00:35

이진 트리 root가 주어지면 트리가 미러인지 확인합니다 (즉, 중심을 중심으로 대칭).

 

예시 1:

입력: root = [1,2,2,3,4,4,3]
출력: true

 

예시 2:

입력: root = [1,2,2,null,3,null,3]
출력: false

 

조건:

  • The number of nodes in the tree is in the range [1, 1000].
  • -100 <= Node.val <= 100

 

제약 조건:

  • 재귀적으로나 반복적으로 해결할 수 있습니까?

 

정답:

public class Solution {
    public bool IsSymmetric(TreeNode root) 
    {
        if(root == null) 
            return true;
        return Tree(root.left, root.right);
    }
    
    private static bool Tree(TreeNode node1, TreeNode node2)
    {
        if(node1 == null && node2 == null) 
            return true;
        if(node1 == null || node2 == null)
            return false;
        if(node1.val == node2.val) 
            return Tree(node1.left, node2.right) && Tree(node1.right, node2.left);
        return false;
    }
}

해설: 

만약 노드가 null이라면 true를 return하고 한쪽만 null이라면 false를 return합니다.만약 null이 없다면 노드1의 왼쪽과 노드2의 오른쪽을 서로 비교하고 노드1의 오른쪽과 노드2의 왼쪽을 재귀로 체크합니다.