1 public class Solution {
2 public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {
3 // IMPORTANT: Please reset any member data you declared, as
4 // the same Solution instance will be reused for each test case.
5 ArrayList<Integer> list = new ArrayList<Integer>();
6 ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
7 if(root == null)
8 return result;
9 traversal(root, sum, list, result);
10 return result;
11 }
12
13 private void traversal(TreeNode root, int sum, ArrayList<Integer> list, ArrayList<ArrayList<Integer>> result)
14 {
15 list.add(root.val);
16 if(root.left == null && root.right == null){
17 if(sum == root.val){
18 ArrayList<Integer> tmp = new ArrayList<Integer>();
19 tmp.addAll(list);
20 result.add(tmp);
21 }
22 }
23
24 if(root.left != null)
25 traversal(root.left, sum - root.val, list, result);
26 if(root.right != null)
27 traversal(root.right, sum - root.val, list, result);
28 list.remove(list.size() - 1);
29 }
30 }