[LeetCode] Evaluate Boolean Binary Tree

아르당·2026년 8월 29일

LeetCode

목록 보기
495/565
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

다음과 같은 성질을 가진 완전 이진 트리의 루트가 주어진다.

  • Leaf nodes는 0 또는 1을 가지고, 0은 False를 나타내고 1은 True를 나타낸다.
  • Non-leaf nodes는 2 또는 3을 가지고, 2는 boolean OR을 나타내고 3은 boolean AND를 나타낸다.

node에 대한 평가는 다음과 같다.

  • 만약 node가 leaf node라면, 평가는 node의 값이다.
  • 그렇지 않다면, 해당 node의 두 자식을 평가하고 boolean 연산을 자식 자식의 평가에 적용해라.

root node 평가의 boolean 결과를 반환해라.
완전 이진 트리는 이진 트리이고 각 node는 0 또는 2 자식을 갖는다.
leaf node는 0 자식을 갖는 노드이다.

Example

#1

Input: root = [2, 1, 3, null, null, 0, 1]
Output: true

#2
Input: root = [0]
Output: false

Constraints

  • 트리에 노드의 수는 [1, 1000]범위에 있다.
  • 0 <= Node.val <= 3
  • 모든 노드는 0 또는 2 자식을 갖는다.
  • Leaf nodes는 0 또는 1의 값을 갖는다.
  • Non-leaf nodes는 2 또는 3의 값을 갖는다.

Solved

/**
 * 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 evaluateTree(TreeNode root) {
        if(root.left == null && root.right == null){
            if(root.val == 0){
                return false;
            }

            return true;
        }

        boolean left = evaluateTree(root.left);
        boolean right = evaluateTree(root.right);

        if(root.val == 2){
            return left || right;
        }

        return left && right;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글