一.题目解析叶子节点是true和false其他的是 |运算,算出最后的结果算法讲解1.函数头dfs(root)2.函数体bool leftdfs(root-left)bool rightdfs(root-right)3.递归出口当到达叶子节点时返回结果if(root-leftnullptr)return root-val0?false:true代码实现/** * 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-leftnullptrroot-rightnullptr)return root-val0?false:true; bool leftevaluateTree(root-left); bool rightevaluateTree(root-right); return root-val2?left|right:leftright; } };
递归_计算bool二叉树的值_C++
一.题目解析叶子节点是true和false其他的是 |运算,算出最后的结果算法讲解1.函数头dfs(root)2.函数体bool leftdfs(root-left)bool rightdfs(root-right)3.递归出口当到达叶子节点时返回结果if(root-leftnullptr)return root-val0?false:true代码实现/** * 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-leftnullptrroot-rightnullptr)return root-val0?false:true; bool leftevaluateTree(root-left); bool rightevaluateTree(root-right); return root-val2?left|right:leftright; } };