class Solution {
public void dfs(List<List<Integer>>res,TreeNode t,int sum,LinkedList<Integer>que){
if((sum-t.val)==0&&(t.left==null&&t.right==null)){
que.offer(t.val);
// System.out.println(que.toString());
res.add(new LinkedList<>(que));
return;
}
TreeNode m = t;
que.offer(m.val);
if(m.left!=null){
dfs(res,m.left,sum-m.val,que);
que.pollLast();
}
if(m.right!=null){
dfs(res,m.right,sum-m.val,que);
que.pollLast();
}
}
public List<List<Integer>> pathSum(TreeNode root, int sum) {
if(root==null){
return new LinkedList<>();
}
List<List<Integer>> res = new LinkedList<List<Integer>>();
LinkedList<Integer> que = new LinkedList<>();
TreeNode t = root;
dfs(res,t,sum,que);
return res;
}
}