文章目录
- 题目
- 方法一:DFS+回溯
题目
方法一:DFS+回溯
解题核心 就是要知道递归在哪里结束 ,收货结果在哪里收获,哪些变量需要回溯,哪些不需要回溯
class Solution {
List<List<Integer>> res = new ArrayList<>();
List<Integer> path = new ArrayList<>();
int targetSum = 0;
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
this.targetSum = targetSum;
dfs(root,0);
return res;
}
public void dfs(TreeNode root , int sum){
if(root==null) return;
path.add(root.val);
sum = sum+root.val;
if(root.left == null && root.right == null) {
if(sum == targetSum)
res.add(new ArrayList<>(path));
}
dfs(root.left, sum);
dfs(root.right, sum);
path.remove(path.size() - 1);
}
}