[Leetcode] 101. Symmetric Tree
Algorithm2021. 8. 3. 17:04
반응형
Identifying the Problem
트리를 반으로 나눴을 때 대칭이 되는지 판단해 true, false를 return 한다.
Organizing thoughts
1. 자녀 계층 왼쪽과 오른쪽으로 나눠 시작한다.
1-1 왼쪽은 중위 순회를 왼쪽 우선, 오른쪽은 오른쪽 우선으로 탐색한다.
2. 둘 중 하나 null 이면 flag = false
3. 탐색 중 둘 다 값이 다르면 flag = false
Sourcecode
void answer(struct TreeNode *l,struct TreeNode *r,int *f);
bool isSymmetric(struct TreeNode* root){
struct TreeNode *l,*r;
l = root->left;
r = root->right;
int flag = 1;
answer(l,r,&flag);
return flag;
}
void answer(struct TreeNode *l,struct TreeNode *r,int *f)
{
if(!l && r) *f = 0;
if(l && !r) *f = 0;
else if(l && r)
{
if(l->val != r->val) *f = 0;
answer(l->left,r->right,f);
answer(l->right,r->left,f);
}
}
Mistake
- return 값을 true로 한 경우와 false로 한 경우 코드가 꼬여서 복잡해지거나 에러가 난다.
바로 true false로 하는 게 아니라 false 인 경우에만 flag를 세우는 방식으로 하니 이해가 편했다.
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 153. Find Minimum in Rotated Sorted Array (0) | 2021.08.04 |
---|---|
[Leetcode] 206. Reverse Linked List (0) | 2021.08.03 |
[Leetcode] 100. Same Tree (0) | 2021.08.03 |
[Leetcode] 94. Binary Tree Inorder Traversal (0) | 2021.08.03 |
[Leetcode] 69. Sqrt(x) (0) | 2021.08.03 |
댓글()