题目描述:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22
,
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
Return:
[
[5,4,11,2],
[5,8,4,5]
]
找到所有路径和等于目标值的路径,在递归的同时维护一个路径数组即可。
class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
int cur=0;
vector<vector<int>> result;
vector<int> path;
hasPathSum_recur(root, cur, sum, result, path);
return result;
}
void hasPathSum_recur(TreeNode* root, int cur, int sum, vector<vector<int>> &result, vector<int> path)
{
if(root==NULL) return;
else if(root->left==NULL&&root->right==NULL)
{
if(cur+root->val==sum)
{
path.push_back(root->val);
result.push_back(path);
}
return;
}
cur+=root->val;
path.push_back(root->val);
hasPathSum_recur(root->left,cur,sum,result,path);
hasPathSum_recur(root->right,cur,sum,result,path);
return;
}
};