[Leetcode] 100. Same Tree
Algorithm2021. 8. 3. 16:42
반응형
Identifying the Problem
주어진 두 개의 이진트리 p, q를 비교해 같은 지 다른 지 비교해
같으면 true, 다르면 false를 return 한다.
Organizing thoughts
크게 두 가지 방법이 있는데,
1. 94번 문제의 p q 각각 answer를 만들고, answer끼리 비교한다.
2. p, q 둘 다 중위순회하면서 서로 같은지 비교하고, 다를 경우 false 가 되게한다.
2번이 더 간단하기에 2번을 채택했다.
Sourcecode
bool checkTree(struct TreeNode* p, struct TreeNode* q);
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if (!p && !q) return true; // 둘다 null
else if (!p || !q) return false; //둘 중 하나만 null (xor)
return checkTree(p, q);
}
bool checkTree(struct TreeNode* p, struct TreeNode* q)
{
if (!p && !q) return true; // both are null
else if (!p || !q) return false; // one is null
if (p->val != q->val || !checkTree(p->left, q->left) || !checkTree(p->right, q->right))
return false;
// 1조건은 단순히 두 값이 다를 때
// 2,3조건은 이중부정을 이용해 !false true 니깐, false 를 리턴
return true;
}
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 206. Reverse Linked List (0) | 2021.08.03 |
---|---|
[Leetcode] 101. Symmetric Tree (0) | 2021.08.03 |
[Leetcode] 94. Binary Tree Inorder Traversal (0) | 2021.08.03 |
[Leetcode] 69. Sqrt(x) (0) | 2021.08.03 |
[Leetcode] 238. Product of Array Except Self (0) | 2021.08.01 |
댓글()