짱아의 개발 기록장

LeetCode : 101. Symmetric Tree 본문

Algorithm/LeetCode

LeetCode : 101. Symmetric Tree

jungahshin 2021. 1. 1. 15:22
반응형

난이도는 easy였지만...생각보다? 이런 문제류를 처음 풀어본 사람이면 충분히 어려웠을 만한 문제였다.

분류로는 BFS로 되어 있었지만,,, 생각보다 간단한 재귀로 풀 수 있다.

 

[메인 로직]

1. 주어진 root 트리를 각각의 다른 트리라고 생각하고 2개의 트리를 비교하는 형식으로 진행한다.

2. 즉, isMirror(root, root) 함수를 돌아서 tree1->left와 tree2->right이 같은지, tree1->right과 tree2->left가 같은지 확인하면 된다! (Symmetric인지 확인한는 것이기 때문에 => 밑의 사진 참고)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
    bool isMirror(TreeNode* tree1, TreeNode* tree2){
        if(tree1==NULL && tree2==NULL) return true;
        if(tree1==NULL || tree2==NULL) return false;
        if(tree1->val!=tree2->val) return false;
        
        return isMirror(tree1->left, tree2->right) && isMirror(tree1->right, tree2->left);
    }
    
    bool isSymmetric(TreeNode* root) {
        return isMirror(root, root);
    }
};
cs
반응형
Comments