1 class Solution {
2 List<List<Integer>> res = new ArrayList<>();
3 public List<List<Integer>> pathSum(TreeNode root, int sum) {
4 if(root == null) return res;
5 backtrack(root, sum, new ArrayList<>());
6 return res;
7 }
8
9 public void backtrack(TreeNode root, int remain, List<Integer> list) {
10 if(root == null) {
11 list.add(0);
12 return;
13 }
14 remain -= root.val;
15 list.add(root.val);
16 if(root.left == null && root.right == null && remain == 0) {
17 res.add(new ArrayList<>(list));
18 return;
19 }
20 backtrack(root.left, remain, list);
21 list.remove(list.size() - 1);
22 backtrack(root.right, remain, list);
23 list.remove(list.size() - 1);
24
25 }
26 }