Path Sum II

 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 }
原文地址:https://www.cnblogs.com/jasonC/p/3418064.html