思路
- DFS
- “恢复现场”意思是,在递归之后,说明“递归的一条路走到头了”,path长度为n-1,此时要把path中的最后一个值去掉,path缩短为n-1,再进行其他路径测试
代码
class Solution {
public:
vector<vector<int> > res;
vector<int> path;
vector<vector<int>> pathSum(TreeNode* root, int sum) {
recur(root, sum);
return res;
}
void recur(TreeNode* root, int sum) {
// 1. 终止条件
if(root == NULL) return;
// 2. 执行内容
path.push_back(root->val);
sum -= root->val;
if(sum==0 && root->left==NULL && root->right==NULL) {
// vector<int> path_temp(path);
res.push_back(path);
}
// 3. 递归
recur(root->left, sum);
recur(root->right, sum);
//恢复现场
path.pop_back();
}
};