leetcode 437 路径总和

发布时间:2024年01月12日

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。

路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

https://leetcode.cn/problems/path-sum-iii/description/?envType=study-plan-v2&envId=top-100-liked

思路:
通过深度优先算法,对树中的每个节点进行暴力搜索

细节:
假如a节点已经满足条件了,此时还需要继续搜索(因为可能会出现+1 -1的情况)
所以此时sum++ 而不是直接退出搜索

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     long val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(long x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(long x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    long rootSum(TreeNode* root, long targetSum)
    {
        if(root == nullptr)
        {
            return 0;
        }
        long sum = 0;
        if(targetSum == root->val)
        {
            sum++;
        }
        sum += rootSum(root->left, targetSum-root->val);
        sum += rootSum(root->right, targetSum-root->val);

        return sum; 
    }
    long pathSum(TreeNode* root, long targetSum) {
        if(root == nullptr)
        {
            return 0;
        }
        long sum = rootSum(root, targetSum);
        sum += pathSum(root->left, targetSum);
        sum += pathSum(root->right, targetSum);

        return sum;
    }
};
文章来源:https://blog.csdn.net/qq_32810943/article/details/135536754
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。