113. 路径总和 II
注意一个问题,题目上没有说全是正数,所以就不能用cur_sum > target
作为判断条件来剪枝
其他没有什么,一个dfs问题
class Solution {
public:
void dfs(TreeNode *node, int cur_sum, int target, vector<int> tmp,
vector<vector<int> > &res) {
cur_sum += node->val;
tmp.push_back(node->val);
if (cur_sum == target && !node->left && !node->right) {
res.push_back(tmp);
return;
}
if(node->left)
dfs(node->left, cur_sum, target, tmp, res);
if(node->right)
dfs(node->right, cur_sum, target, tmp, res);
tmp.pop_back();
cur_sum -= node->val;
}
vector<vector<int> > pathSum(TreeNode *root, int sum) {
vector<int> tmp;
vector<vector<int> > res;
if(root)
dfs(root, 0, sum, tmp, res);
return res;
}
};