일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Python
- 보안
- git
- security
- scss
- bash
- C++
- nginx
- generic
- dotenv
- C#
- leetcode
- AI
- JavaScript
- condition
- property
- type
- docker
- 앙상블
- webpack
- vuetify
- Clone
- VUE
- BOJ
- TypeScript
- vue.js
- machine learning
- npm
- loop
- var
Archives
- Today
- Total
ice rabbit programming
[LeetCode] Same Tree 본문
https://leetcode.com/problems/same-tree/
제목 그대로 주어진 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 |