题目
题目链接
. - 力扣(LeetCode)
题目描述
代码实现
class Solution {
public:
bool evaluateTree(TreeNode* root) {
if(root->left == nullptr && root->right == nullptr) return root->val;
bool left = evaluateTree(root->left);
bool right = evaluateTree(root->right);
return root->val == 2 ? left | right : left & right;
}
};
思路分析
1、首先我们需要弄懂题意。即叶子节点表示bool值,非叶子节点表示 | 或者 &。将叶子节点中的布尔值和非叶子节点中的运算符进行运算,得到新的布尔值。
2、这道题我大体的思路是用的递归。当遇见叶子节点就直接返回其存储的布尔值。按照这样分别拿到左子树和右子树的布尔值。
3、通过非叶子节点即可运算出新的一个布尔值了。