赞
踩
2331. 计算布尔二叉树的值 - 力扣(LeetCode)
对于二叉树中的题:一般都是递归:前序遍历,中序遍历,后序遍历-----dfs。
对于根结点树的布尔值:需要知道它的左子树和右子树的布尔值
那么就需要求以左子树的根节点为root的左子树的布尔值,同样右子树的布尔值。
1、重复子问题-->函数头
给一个根节点,求这棵树的布尔值。
bool dfs(root);
2、某个子问题在干嘛-->函数体
计算root的左子树的布尔值和右子树的布尔值的运算结果,与or或。
bool left = dfs(root->left)
bool right = dfs(root->right)
return root->val == 2 ? left | right : left & right;
3、递归出口
遇到叶子节点就返回叶子结点的bool值。
- class Solution {
- public:
- bool evaluateTree(TreeNode* root) {
- //出口
- if(root->left == nullptr) return root->val;
-
- //记录左右子树的布尔值
- bool left = evaluateTree(root->left);
- bool right = evaluateTree(root->right);
- //计算树的布尔值
- return root->val == 2 ? left | right : left & right;
-
- }
- };
那么本题:要求总树的布尔值,就需要先求到左右子树的布尔值。
那么这就是一个后序遍历。
129. 求根节点到叶节点数字之和 - 力扣(LeetCode)
</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。