LeetCode437. Path Sum III

来源:互联网 发布:石家庄盛光网络怎么样 编辑:程序博客网 时间:2024/05/22 00:24

LeetCode437. Path Sum III

原题地址

题目描述

You are given a binary tree in which each node contains an integer value.

Find the number of paths that sum to a given value.

The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

Example:

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
10
/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
Return 3. The paths that sum to 8 are:
1. 5 -> 3
2. 5 -> 2 -> 1
3. -3 -> 11

思路

这一题与之前的Path Sum 和 Path Sum ii 稍微有点区别。所选路径不是根结点到叶子结点,而是任意结点之间的路径。所有判断条件改为(node->val == sum),然后主函数中分别调用dfs函数求和即可。

代码实现

class Solution {public:    int dfs(TreeNode* node, int sum){      int count = 0;      if(node->val == sum){           count++;        }        count += dfs(node->left, sum-node->val);        count += dfs(node->right, sum-node->val);        return count;    }    int pathSum(TreeNode* root, int sum) {        if(!root) return 0;        return dfs(root, sum) + pathSum(root->left, sum) + pathSum(root->right, sum);    }};
0 0
原创粉丝点击