输入:一棵“布尔二叉树”
要求:返回整棵树的布尔运算结果
输出:true / false
思路:直接递归遍历
-
如果是叶子节点,直接返回
root->val == 1 -
如果是运算节点:
-
先算出左右子树的布尔值
-
再根据
val进行||或&&
-
复杂度:
时间复杂度:O(n)
空间复杂度:O(h)
class Solution {
public:
bool dfs(TreeNode* root) {
// 叶子节点
if (!root->left && !root->right) {
return root->val == 1;
}
// 求左右
bool left = dfs(root->left);
bool right = dfs(root->right);
// 2 = OR, 3 = AND
if (root->val == 2) return left || right;
return left && right;
}
bool evaluateTree(TreeNode* root) {
return dfs(root);
}
};
2134

被折叠的 条评论
为什么被折叠?



