2331. Evaluate Boolean Binary Tree

2331. Evaluate Boolean Binary Tree #

题目 #

给定一棵 完整二叉树 的根,这棵树有以下特征:

  • 叶子节点 要么值为 0 要么值为 1,其中 0 表示 false1 表示 true
  • 非叶子节点 要么值为 2 要么值为 3,其中 2 表示逻辑或 OR3表示逻辑与 AND

计算一个节点的值方式如下:

  • 如果节点是个叶子节点,那么节点的 为它本身,即 truefalse
  • 否则,计算 两个孩子的节点值,然后将该节点的运算符对两个孩子值进行 运算

返回根节点 root 的不二运算值。

完整二叉树 是每个节点有 0 个或者 2 个孩子的二叉树。

思路 #

代码 #

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) {
        boolean ans = true;
        switch (root.val) {
            case 0:
                ans = false;
                break;
            case 1:
                ans = true;
                break;
            case 2:
                ans = evaluateTree(root.left) | evaluateTree(root.right);
                break;
            case 3:
                ans = evaluateTree(root.left) & evaluateTree(root.right);
                break;
        }
        return ans;
    }
}