leetcode 2331 计算布尔二叉树的值
一、题目描述
二、解题思路
整体思路
由于存在重复子问题,所以可以采用递归来解决这个问题。
具体思路
函数作用:evaluateTree函数用于返回root节点的值;
递归出口:如果节点为叶子节点,就返回其值(将int转成bool);
函数体:
<1>第一步,处理左子树,计算根节点的左孩子节点的值;
<2>第二步,处理右子树,计算根节点的右孩子节点的值;
<3>根据root的值对前面得到的两个结果进行或运算或者与运算,将结果返回;
三、代码实现
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool evaluateTree(TreeNode* root) {//递归出口if(root->left==nullptr)return root->val==0?false:true;//处理左子树bool left=evaluateTree(root->left);//处理右子树bool right=evaluateTree(root->right);return root->val==2?left|right:left&right;}
};