개발 공부/TIL(Today I Learned)
99클럽 코테 스터디 14일차 TIL Symmetric Tree
애해
2024. 8. 5. 00:31
728x90

# 오늘의 학습 키워드
이분탐색(이진탐색)
# 오늘의 문제
https://leetcode.com/problems/symmetric-tree/description/
Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
# 나의 풀이방식
오늘의 문제는 root 노드를 기준으로 좌우대칭 여부를 return하는 문제였다.
1. 대칭을 확인하기 위한 재귀함수 구현
2. 노드값이 null인 경우 처리
- 비교하는 값이 둘다 null이면 true, 한쪽만 null이면 false 반환
3. 노드가 다른 경우 대칭이 아니므로 false 반환
4. 노드가 같은 경우 재귀함수 호출
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return compareTo(root.left, root.right);
}
private boolean compareTo(TreeNode left, TreeNode right){
// null 처리
if(left == null && right == null){
return true;
}else if(left == null || right == null) { // 무조건 false인 경우
return false;
}
// 노드를 비교해서 동일할 경우 재귀함수로 반복
if(left.val == right.val){
return compareTo(left.left, right.right) && compareTo(left.right, right.left);
}else{ // 노드가 다를 경우 false 반환
return false;
}
}
}
# 오늘의 회고
1depth까지는 단순 값비교라 어렵지 않았지만 2depth부터는 대칭으로 비교해야했는데 재귀함수 쓰는건 알겠지만 어떻게 구현해야할지 한참 고민했다.
이진탐색 대칭 문제나오면 바로 풀수있는 그날이 오기를..... ^.ㅜ
반응형