LeetCode - 101

sorious77·2021년 12월 5일
1

LeetCode

목록 보기
7/7

101. Symmetric Tree

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

이진 트리가 루트를 기준으로 좌우 대칭인지 아닌지를 확인하는 문제다.


좌우 대칭을 확인하기 위해 루트의 왼쪽과 오른쪽 자식으로 각각 나눈 뒤, 두 노드를 비교했다.

비교한 뒤에는 해당 노드들의 자식끼리 또 비교를 하기 위해 왼쪽의 왼쪽 / 오른쪽의 오른쪽과 왼쪽의 오른쪽 / 오른쪽의 왼쪽 자식들을 다시 비교하였다.

이렇게 쭉쭉 나가면서 비교하면 모든 노드가 대칭이 이루어졌는지 확인할 수 있다!



class Solution {
    boolean isSymmetric(TreeNode left, TreeNode right) {
        if(left == null && right == null) {
            return true;
        } else if(left == null || right == null) {
            return false;
        }        
        
        if(left.val != right.val) {
            return false;         
        }
        
        return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
    }
    
    public boolean isSymmetric(TreeNode root) {
        return isSymmetric(root, root);
    }
}

https://leetcode.com/submissions/detail/597211465/
https://github.com/sorious77/LeetCode/blob/main/code/101.java

1개의 댓글

comment-user-thumbnail
2022년 1월 12일

안녕하세요! 혹시 리트코드를 쓰시는 이유가 있을까요? 영어라서 쓸까말까 고민중인데 쓸만한가 해서요

답글 달기