-
[LeetCode] Symmetric Tree알고리즘 2019. 11. 28. 17:21
문제
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3] is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following [1,2,2,null,3,null,3] is not:
1 / \ 2 2 \ \ 3 3
Approach
처음에는 트리를 왼쪽, 오른쪽 서브트리로 나누고 왼쪽으로 치는 가지, 오른쪽으로 치는 가지를 각각 +1 -1, 값도 +, - 해서
둘을 더해 0이 되면 대칭이다 이렇게 생각해 풀었는데
교묘하게 이를 만족하면서 대칭이 아닌 트리가 있어서 실패했다.
그래서 왼쪽의 왼쪽과 오른쪽의 오른쪽, 왼쪽의 오른쪽과 오른쪽의 왼쪽이 각각 같은지를 재귀를 통해 구현했다
Code
https://github.com/chi3236/algorithm/blob/master/LeetCode_SymmetricTree.cpp
'알고리즘' 카테고리의 다른 글
[LeetCode] Binary Tree Zigzag Level Order Traversal (0) 2019.12.02 [LeetCode] Binary Tree Level Order Traversal (0) 2019.12.02 [LeetCode] Validate Binary Search Tree (0) 2019.11.27 [LeetCode] Binary Tree Inorder Traversal (0) 2019.11.26 [LeetCode] Decode Ways (0) 2019.11.25