逻辑思维的奥妙:探究布尔二叉树的值计算方法

本篇博客会讲解力扣“2331. 计算布尔二叉树的值”的解题思路,这是题目链接。先来审题:
逻辑思维的奥妙:探究布尔二叉树的值计算方法_第1张图片
本题的解题思路是:使用递归,若子结点为空,则返回根结点;否则返回左树和右树对应的计算结果。代码如下:

bool evaluateTree(struct TreeNode* root){
    if (root)
    {
        if (root->left == NULL) // 此时root->right == NULL
        {
            // 此时root为叶子结点
            /*if (root->val == 1)
            {
                return true;
            }
            else
            {
                return false;
            }*/

            // 1为true,0为false
            return (bool)root->val;
        }
        // 此时root为非叶子结点
        else if (root->val == 2)
        {
            return evaluateTree(root->left)
                || evaluateTree(root->right);
        }
        else // root->val == 3
        {
            return evaluateTree(root->left)
                && evaluateTree(root->right);
        }
    }

    // 不会走到这,因为是完整二叉树
    return false;
}

逻辑思维的奥妙:探究布尔二叉树的值计算方法_第2张图片
成功通过全部测试用例。

总结

二叉树的题目优先考虑递归,一般会分多种情况讨论。

感谢大家的阅读!

你可能感兴趣的:(力扣刷题,c语言,算法,数据结构,leetcode,力扣)