2331.计算布尔二叉树的值
链接:2331.计算布尔二叉树的值
难度:Easy
标签:树、深度优先搜索、二叉树
简介:返回根节点 root 的布尔运算值。
题解 1 - 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)
题解 2 - 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;
    }
}
题解 3 - 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); 
    }
};