这道题是普通的dfs
public class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<Integer> list = new ArrayList<>();
List<List<Integer>> twoList = new ArrayList<>();
if(root==null){
return twoList;
}
list.add(root.val);
dfs(twoList, list, sum, root.val, root);
return twoList;
}
private void dfs(List<List<Integer>> twoList, List<Integer> list, int target, int cur, TreeNode node) {
if (cur == target&&node.left==null&&node.right==null) {
twoList.add(new ArrayList<>(list));//bug所在地,必须这样写,不能直接list;引用问题,很坑。
return;
}else {
if(node.left!=null){
list.add(node.left.val);
dfs(twoList,list,target,cur+node.left.val,node.left);
list.remove(list.size()-1);
}
if(node.right!=null){
list.add(node.right.val);
dfs(twoList,list,target,cur+node.right.val,node.right);
list.remove(list.size()-1);
}
}
}
}