1、计算布尔二叉树的值
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;
}
};
那么本题:要求总树的布尔值,就需要先求到左右子树的布尔值。
那么这就是一个后序遍历。
2、求根节点到叶节点数字之和
129. 求根节点到叶节点数字之和 - 力扣(LeetCode)
</