Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:Given the below binary tree and sum
= 22,
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > ret;
vector<int> path;
_pathSum(root,sum,path,ret);
return ret;
}
void _pathSum(TreeNode *root, int sum, vector<int> &path, vector<vector<int> >& ret){
if(root==NULL)
return;
if(!root->left && !root->right && root->val==sum){
path.push_back(root->val);
ret.push_back(path);
path.pop_back();
}
if(!root->left && !root->right && root->val!=sum){
return;
}
path.push_back(root->val);
if(root->left)
_pathSum(root->left,sum-root->val,path,ret);
if(root->right)
_pathSum(root->right,sum-root->val,path,ret);
path.pop_back();
}
};
本文介绍了一种算法,用于在给定的二叉树中找到所有从根节点到叶子节点的路径,使得这些路径上的元素之和等于指定的数值。通过实例演示了如何实现这一算法。
1200

被折叠的 条评论
为什么被折叠?



