99클럽 코테 스터디 13일차 TIL - 이진탐색

김동하·2024년 8월 4일
0

알고리즘

목록 보기
62/90

문제

[Symmetric Tree]

풀이

  • 같은 레벨에 있는 트리의 노드가 대칭인지 판별하는 문제
  • 같은 레벨 노드를 검사해야하기 때문에 bfs가 적합함
  • while문에서 검사 노드 두 개 (left, right라 칭함)를 꺼내서 검사하고 대칭으로 add 해주면 됨

코드

import java.util.LinkedList;
import java.util.Queue; 

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) return true;
        
        Queue<TreeNode> queue = new LinkedList<>(); 
        queue.add(root);
        queue.add(root);
        
        while(!queue.isEmpty()){
            TreeNode left = queue.poll();
            TreeNode right = queue.poll();
            
            if (left == null && right == null) continue;
            if (left == null || right == null || left.val != right.val) return false;
            
            queue.add(left.left);
            queue.add(right.right);
            queue.add(left.right);
            queue.add(right.left);
        }
        return true;
    }
}

정리

  • 이진탐색 문제인데 이진탐색으로 어떻게 풀지 감이 안 잡혀서 걍 bfs로 품
  • left, right 둘 다 null일 경우 false를 했다가 좀 헤맸음. 둘 다 null이라는 건 대칭이니까 continue해야 함을 알아차리는데 오래 걸렸다
profile
프론트엔드 개발

0개의 댓글