1609. Even Odd Tree

양성준·2025년 6월 3일

코딩테스트

목록 보기
76/102

문제

https://leetcode.com/problems/even-odd-tree/description/

풀이

class Solution {
    public boolean isEvenOddTree(TreeNode root) {
        int level = 0;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        while(!queue.isEmpty()) {
            int size = queue.size();
            int prior = level % 2 == 0 ? Integer.MIN_VALUE : Integer.MAX_VALUE;
            for(int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                if(node.left != null) {
                    queue.add(node.left);
                }
                if(node.right != null) {
                    queue.add(node.right);
                }

                if(level % 2 == 0) {
                if(prior >= node.val || node.val % 2 == 0) return false;
                }

                if(level % 2 != 0) {
                if(prior <= node.val || node.val % 2 != 0) return false;
                }
                prior = node.val;
            }
            level++;
        }
        return true;
    }
}
  • int prior = level % 2 == 0 ? Integer.MIN_VALUE : Integer.MAX_VALUE; 를 사용하면, 첫 시작 노드일 때도 자연스럽게 비교 로직이 가능해진다.
  • level이 짝수인데, strictly increasing이 아니거나, node.val이 짝수인 경우 false를 return
  • level이 홀수인데, strictly decreasing이 아니거나, node.val이 홀수인 경우 false를 return
profile
백엔드 개발자

0개의 댓글