LeetCode113—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.
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]
]
分析
跟LeetCode112—Path Sum相同,只不过就是每次找到一条符合条件的路径就把这条路径保存起来。
代码
class Solution {
private:
bool isLeafNode(TreeNode * root)
{
if(root->left==NULL&&root->right==NULL)
return true;
else
return false;
}
void dfs(TreeNode *root,int sum,vector<int>tmp,vector<vector<int>>&res)
{
if(root==NULL)
return ;
tmp.push_back(root->val);
if(isLeafNode(root))
{
int val=accumulate(tmp.begin(),tmp.end(),0);
if(val == sum)
res.push_back(tmp);
}
else
{
dfs(root->left,sum,tmp,res);
dfs(root->right,sum,tmp,res);
}
}
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<int>tmp;
vector< vector<int> >res;
if(root==NULL)
return res;
dfs(root,sum,tmp,res);
return res;
}
};
本文解析了LeetCode 113—PathSum II问题,介绍了如何通过深度优先搜索(DFS)遍历二叉树并找出所有从根节点到叶子节点且路径上节点值之和等于给定目标值的路径。通过递归方式实现,包括检查节点是否为叶子节点以及路径总和是否等于目标值。
3388

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



