이진 트리가 주어지고 중심을 기준으로 거울처럼 대칭인지 확인
sudo code
root 기준 left와 right가 같을 경우 true
left right 양쪽이 null이면 true
left 혹은 right 한쪽이 null이면 false
left left와 right의 right가 같아야 하고
left의 right와 right의 left가 같아야 함
1차 시도
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null) return true;
return isSame(root.left, root.right);
}
public boolean isSame(TreeNode left, TreeNode right) {
if(left == null && right == null) return true;
if(left.val != right.val) return false;
return isSame(left.right, right.left) && isSame(left.left, right.right);
}
}
java.lang.NullPointerException
at line 23, Solution.isSame
at line 24, Solution.isSame
at line 19, Solution.isSymmetric
at line 54, __DriverSolution__.__helper__
at line 84, __Driver__.main
Last executed input:
[1,2,2,null,3,null,3]
2차 시도
class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null) return true;
return isSame(root.left, root.right);
}
public boolean isSame(TreeNode left, TreeNode right) {
if(left == null && right == null) return true;
if(left != null && right != null) {
if (left.val != right.val) return false;
}else return false; // 둘 중 하나가 null인 경우
return isSame(left.right, right.left) && isSame(left.left, right.right);
}
}
Runtime: 0 ms
Memory Usage: 37.4 MB
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] - Delete Node in a Linked List (0) | 2021.05.03 |
---|---|
[LeetCode] - Binary Tree Level Order Traversal (0) | 2021.04.29 |
[LeetCode] - Validate Binary Search Tree (0) | 2021.04.27 |
[LeetCode] - Maximum Depth of Binary Tree (0) | 2021.04.26 |
[LeetCode] - Height Checker (0) | 2021.04.23 |