Problem
주어진 트리가 정확히 대칭을 이루는지 확인하는 문제입니다.
Solution
그냥 비교하면 되는 문제입니다.
null
체크만 확실히 합니다.
Java Code
// 1. Recursive
class Solution {
public boolean isSymmetric(TreeNode root) {
return root == null || isEqual(root.left, root.right);
}
public boolean isEqual(TreeNode a, TreeNode b) {
if (a == null || b == null) return a == b;
if (a.val != b.val) return false;
return isEqual(a.left, b.right) && isEqual(a.right, b.left);
}
}
// 2. Iterative
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) return true;
Queue<TreeNode> q = new LinkedList<>();
q.add(root.left);
q.add(root.right);
while (!q.isEmpty()) {
TreeNode a = q.poll();
TreeNode b = q.poll();
if (a == null && b == null) continue;
if (a == null || b == null) return false;
if (a.val != b.val) return false;
q.add(a.left);
q.add(b.right);
q.add(a.right);
q.add(b.left);
}
return true;
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Easy] Two Sum (Java, Kotlin) (2) | 2020.12.28 |
---|---|
[LeetCode Easy] Maximum Subarray (Java) (0) | 2020.12.28 |
[LeetCode Easy] Climbing Stairs (Java) (0) | 2020.12.28 |
[LeetCode Easy] Happy Number (Java) (0) | 2020.12.28 |
[LeetCode Easy] Best Time to Buy and Sell Stock (Java) (0) | 2020.12.23 |