1、前言

2、思路
使用回溯的方式来做,回溯是一种思想,不能说是一种套路。就是开始你一直放,但是到了最后就要开始吐出来。
3、代码
class Solution {
private List<List<Integer>> res = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
if(root == null){
return new ArrayList<>();
}
dfs(root, targetSum, new ArrayList<>());
return res;
}
private void dfs(TreeNode root, int targetSum, List<Integer> list){
if(root == null){
return;
}
if(root.left == null && root.right == null && targetSum - root.val == 0){
list.add(root.val);
res.add(new ArrayList<>(list));
list.remove(list.size() - 1);
return;
}
list.add(root.val);
dfs(root.left, targetSum - root.val, list);
dfs(root.right, targetSum - root.val, list);
list.remove(list.size() - 1);
}
}
网友评论