437. Path Sum III
2017-06-04 11:33
375 查看
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
/ \ \
3 2 11
/ \ \
3 -2 1
Return 3. The paths that sum to 8 are:
5 -> 3
5 -> 2 -> 1
-3 -> 11
这道题就是递归的方法,先从根部开始去递归计算每一个子树是否存在和为sum的路径,sum-root->root如果结果等于下一个节点的val,那么这条路径符合条件。计数器为res。然后是在pathSum函数中还要通过把左右子节点作为根节点再去找可能的路径,把结果相加即可。
代码如下:
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:
5 -> 3
5 -> 2 -> 1
-3 -> 11
这道题就是递归的方法,先从根部开始去递归计算每一个子树是否存在和为sum的路径,sum-root->root如果结果等于下一个节点的val,那么这条路径符合条件。计数器为res。然后是在pathSum函数中还要通过把左右子节点作为根节点再去找可能的路径,把结果相加即可。
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int pathSum(TreeNode* root, int sum) { if(root==NULL){ return 0; } return dfs(root,sum)+pathSum(root->left,sum)+pathSum(root->right,sum); } int dfs(TreeNode* root,int sum){ int res=0; if(root==NULL){ return res; } if(sum==root->val) ++res; res+=dfs(root->left,sum-root->val); res+=dfs(root->right,sum-root->val); return res; } };
相关文章推荐
- [python]leetcode(437). Path Sum III
- LeetCode 437 Path Sum III (DFS)
- 437. Path Sum III
- leetcode(437):Path Sum III
- LeetCode 437 Path Sum III
- 437. Path Sum III
- LeetCode "437. Path Sum III"
- 437. Path Sum III
- LeetCode.112(113/437) Path Sum I && II && III
- LeetCode 437 Path Sum III 题解
- 437. Path Sum III
- 437. Path Sum III
- 437. Path Sum III
- 437. Path Sum III
- leetcode[437] PathSum III 个人题解
- leetcode-437-Path Sum III
- 437. Path Sum III
- 437. Path Sum III
- 437. Path Sum III
- 437. Path Sum III