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();
}
};
本文介绍了一个经典的二叉树遍历问题——PathSum II。该问题要求找到所有从根节点到叶子节点且路径之和等于给定值的路径。通过深度优先搜索(DFS)算法实现解决方案,并提供详细的C++代码示例。
666

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



