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 }