-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEvaluateBooleanBinaryTree2331.java
51 lines (39 loc) · 1.58 KB
/
EvaluateBooleanBinaryTree2331.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.*;
import javax.swing.tree.TreeNode;
public class EvaluateBooleanBinaryTree2331 {
/*
* You are given the root of a full binary tree with the following properties:
Leaf nodes have either the value 0 or 1, where 0 represents False and 1 represents True.
Non-leaf nodes have either the value 2 or 3, where 2 represents the boolean OR and 3 represents the boolean AND.
The evaluation of a node is as follows:
If the node is a leaf node, the evaluation is the value of the node, i.e. True or False.
Otherwise, evaluate the node's two children and apply the boolean operation of its value with the children's evaluations.
Return the boolean result of evaluating the root node.
A full binary tree is a binary tree where each node has either 0 or 2 children.
A leaf node is a node that has zero children
*/
//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) return root.val != 0 ;
boolean left = evaluateTree(root.left);
boolean right = evaluateTree(root.right);
boolean ans ;
if (root.val == 2) ans = left | right ;
else ans = left & right ;
return ans ;
}
}
}