Leetcode—2331.计算布尔二叉树的值【简单】

2023每日刷题(六)

Leetcode—2331.计算布尔二叉树的值

Leetcode—2331.计算布尔二叉树的值【简单】_第1张图片

递归实现代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool evaluateTree(struct TreeNode* root){
    struct TreeNode* p = root;
    if(p == NULL) {
        return NULL;
    } else if(p->left == NULL) {
        if(p->val == 0) {
            return false;
        } else {
            return true;
        }
    } 
    bool left = evaluateTree(p->left);
    bool right = evaluateTree(p->right);
    if(p->val == 2) {
        return left || right;
    } else if(p->val == 3){
        return left && right;
    } else if(p->val == 0) {
        return false;
    } else {
        return true;
    }
}

运行结果

Leetcode—2331.计算布尔二叉树的值【简单】_第2张图片

改良版代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool evaluateTree(struct TreeNode* root){
    if(!root->left) {
        return root->val;
    }
    return (root->val == 2 ? (evaluateTree(root->left) || evaluateTree(root->right)): (evaluateTree(root->left) && evaluateTree(root->right)));
}

运行结果

Leetcode—2331.计算布尔二叉树的值【简单】_第3张图片
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

你可能感兴趣的:(LeetCode刷题,leetcode,算法,c语言,深度优先搜索,二叉树)