2331.计算布尔二叉树的值
链接:2331.计算布尔二叉树的值
难度:Easy
标签:树、深度优先搜索、二叉树
简介:返回根节点 root 的布尔运算值。
题解 1 - cpp
- 编辑时间:2023-02-06
- 执行用时:12ms
- 内存消耗:14.6MB
- 编程语言:cpp
- 解法介绍:dfs。
class Solution {
public:
bool dfs(TreeNode *node) {
if (node->val == 0) return false;
if (node->val == 1) return true;
if (node->left && node->val == 2) return dfs(node->left) || dfs(node->right);
if (node->left && node->val == 3) return dfs(node->left) && dfs(node->right);
return false;
}
bool evaluateTree(TreeNode* root) {
return dfs(root);
}
};
题解 2 - python
- 编辑时间:2023-02-06
- 执行用时:60ms
- 内存消耗:15.8MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
def dfs(self, node: Optional[TreeNode]) -> bool:
if node.val == 0: return False
if node.val == 1: return True
if node.left and node.val == 2: return self.dfs(node.left) or self.dfs(node.right)
if node.left and node.val == 3: return self.dfs(node.left) and self.dfs(node.right)
return False
def evaluateTree(self, root: Optional[TreeNode]) -> bool:
return self.dfs(root)
题解 3 - rust
- 编辑时间:2023-02-06
- 执行用时:4ms
- 内存消耗:2.4MB
- 编程语言:rust
- 解法介绍:同上。
use std::cell::RefCell;
use std::rc::Rc;
impl Solution {
pub fn evaluate_tree(node: Option<Rc<RefCell<TreeNode>>>) -> bool {
let node = node.unwrap();
let node = node.as_ref().borrow();
if node.val == 0 {
return false;
}
if node.val == 1 {
return true;
}
if node.left.is_some() && node.val == 2 {
return Solution::evaluate_tree(node.left.clone()) || Solution::evaluate_tree(node.right.clone());
}
if node.left.is_some() && node.val == 3 {
return Solution::evaluate_tree(node.left.clone()) && Solution::evaluate_tree(node.right.clone());
}
return false;
}
}