ice rabbit programming

[LeetCode] Same Tree 본문

PS/LeetCode

[LeetCode] Same Tree

판교토끼 2020. 4. 22. 23:18

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

 

Same 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

제목 그대로 주어진 Tree가 동일한 Tree인지 판단하는 문제이다.

DFS를 통해 순회하면서 노드의 값들을 비교하는 식으로 구현하였다. 간만에 메모리와 시간 모두에서 100%를 기록하였다.

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        bool left=false;
        bool right=false;
        /*---check null----*/
        if(p==nullptr&&q==nullptr)
            return true;
        else if(p==nullptr)
            return false;
        else if(q==nullptr)
            return false;
        
        /*---check current---*/
        if(p->val!=q->val)
            return false;
        
        /*---check children---*/
        if(p->left!=nullptr&&q->left!=nullptr)
            left = isSameTree(p->left,q->left);
        if(p->right!=nullptr&&q->right!=nullptr)
            right = isSameTree(p->right,q->right);
        if(p->left==nullptr&&q->left==nullptr)
            left=true;
        if(p->right==nullptr&&q->right==nullptr)
            right=true;
            
        return left&&right;
    }
};

그런데 처음 풀 때 null check는 루트가 TC로 들어올 경우에 대비해서 넣은 건데, 지금 생각해보니 함수에서 null check를 하고 있으므로 밑에서 굳이 자식의 널체크를 하고 넘겼을 필요는는 없을 것 같다.

return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);

이렇게 했어도 충분했을 듯?

'PS > LeetCode' 카테고리의 다른 글

[LeetCode] Customers Who Never Order  (0) 2020.04.26
[LeetCode] Add Binary  (0) 2020.04.23
[LeetCode] Majority Element  (0) 2020.04.21
[LeetCode] Pascal's Triangle  (0) 2020.04.20
[LeetCode] Maximum Depth of Binary Tree (feat. 고정관념?)  (0) 2020.04.20