class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> result;
vector<int> temp;
pathSum(root,sum,temp,result);
return result;
}
void pathSum(TreeNode* root,int sum,vector<int> temp,vector<vector<int>> &result){
if(root==NULL) return ;
temp.push_back(root->val);
if(root->left==NULL && root->right==NULL){
if(sum == root->val){
result.push_back(temp);
}
}
if(root->left!=NULL)
pathSum(root->left,sum - root->val,temp,result);
if(root->right!=NULL)
pathSum(root->right,sum - root->val,temp,result);
}
};
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> result;
vector<int> temp;
pathSum(root,sum,temp,result);
return result;
}
void pathSum(TreeNode* root,int sum,vector<int> temp,vector<vector<int>> &result){
if(root==NULL) return ;
temp.push_back(root->val);
if(root->left==NULL && root->right==NULL){
if(sum == root->val){
result.push_back(temp);
}
}
if(root->left!=NULL)
pathSum(root->left,sum - root->val,temp,result);
if(root->right!=NULL)
pathSum(root->right,sum - root->val,temp,result);
}
};
本文详细介绍了寻找二叉树中所有根节点到叶子节点路径的算法实现,这些路径上的节点值之和等于指定的总和。通过递归方法,代码实现了路径搜索并返回所有符合条件的路径列表。
380

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



