Path Sum II
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,
![]()
Return:
[
[5,4,11,2],
[5,8,4,5]
]
解析
返回所有路径等于sum的路径值,用vector存储。采用DFS。
代码
class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int> > res;
vector<int> path;
findpath(root, sum, path, res);
return res;
}
void findpath(TreeNode* root, int sum, vector<int> &path, vector<vector<int> > &res){
if(!root) return;
path.push_back(root->val);
sum -= root->val;
if(!root->left && !root->right && sum == 0)
res.push_back(path);
findpath(root->left, sum, path, res);
findpath(root->right, sum, path, res);
path.pop_back();
}
};