코딩테스트 준비/leetcode

101. Symmetric Tree [Easy]

MAKGA 2021. 6. 12. 19:47
320x100

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

 

Symmetric Tree - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

트리가 가운데 세로를 기준으로 대칭형인가 판별하는 문제인데

요약하자면 왼쪽의 왼쪽과 오른쪽의 오른쪽이 같아야 하고, 왼쪽의 오른쪽과 오른쪽의 왼쪽이 같아야 한다.

 

class Solution {
public:
    bool compareSubTree(TreeNode* left, TreeNode* right) {
        if (nullptr == left && nullptr == right) {
            return true;
        }
        
        if (nullptr == left || nullptr == right) {
            return false;
        }
        
        if (left->val != right->val) {
            return false;
        }

        /*
        좌측 자식트리의 왼쪽 값과 우측 자식트리의 오른쪽 값이,
        좌측 자식트리의 오른쪽 값과 우측 자식트리의 왼쪽 값이 같아야함
        */
        return compareSubTree(left->left, right->right) && compareSubTree(left->right, right->left);
    }
    
    bool isSymmetric(TreeNode* root) {
        return compareSubTree(root, root);
    }
};

결과

320x100