
解法一
dfs
两边遍历,但是不知道为什么要root为终节点时才停止,但是如果root不是最下面的节点,会报错
class Solution {
public:
vector<int> path;
vector<vector<int>> ans;
void dfs(TreeNode* root,int sum){
if(!root) return;
path.push_back(root->val);
sum = sum-root->val;
if(!root->left && !root->right && !sum) ans.push_back(path);
dfs(root->left,sum);
dfs(root->right,sum);
path.pop_back();//有效解决path容器大小的问题
}
vector<vector<int>> pathSum(TreeNode* root, int target) {
dfs(root,target);
return ans;
}
};

这篇博客探讨了使用深度优先搜索(DFS)解决二叉树路径和问题的方法。代码中定义了一个`Solution`类,包含`pathSum`函数,它通过递归的`dfs`辅助函数来寻找所有路径。当根节点没有子节点且路径和等于目标值时,将路径加入答案。然而,当根节点不是最底层节点时,可能会导致错误。博客深入分析了这个问题并提供了解决方案。
544

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



