2331. Evaluate Boolean Binary Tree
class Solution {
public boolean evaluateTree(TreeNode root) {
if (root == null) {
return false;
}
// 리프 노드의 경우, 노드의 값 자체가 평가 결과
if (root.left == null && root.right == null) {
return root.val == 1;
}
// 비 리프 노드의 경우, 자식 노드의 평가 결과에 대해 논리 연산 수행
boolean left = evaluateTree(root.left);
boolean right = evaluateTree(root.right);
if (root.val == 2) {
return left || right;
} else {
return left && right;
}
}
}
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;
}
}