解法一
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;
}
};