https://leetcode.com/problems/symmetric-tree/
이진 트리가 루트를 기준으로 좌우 대칭인지 아닌지를 확인하는 문제다.
좌우 대칭을 확인하기 위해 루트의 왼쪽과 오른쪽 자식으로 각각 나눈 뒤, 두 노드를 비교했다.
비교한 뒤에는 해당 노드들의 자식끼리 또 비교를 하기 위해 왼쪽의 왼쪽 / 오른쪽의 오른쪽과 왼쪽의 오른쪽 / 오른쪽의 왼쪽 자식들을 다시 비교하였다.
이렇게 쭉쭉 나가면서 비교하면 모든 노드가 대칭이 이루어졌는지 확인할 수 있다!
class Solution {
boolean isSymmetric(TreeNode left, TreeNode right) {
if(left == null && right == null) {
return true;
} else if(left == null || right == null) {
return false;
}
if(left.val != right.val) {
return false;
}
return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
}
public boolean isSymmetric(TreeNode root) {
return isSymmetric(root, root);
}
}
https://leetcode.com/submissions/detail/597211465/
https://github.com/sorious77/LeetCode/blob/main/code/101.java
안녕하세요! 혹시 리트코드를 쓰시는 이유가 있을까요? 영어라서 쓸까말까 고민중인데 쓸만한가 해서요