See More

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List> pathSum(TreeNode root, int sum) { List> result = new ArrayList>(); List list = new ArrayList(); dfs(root,sum,0,list,result); return result; } public void dfs(TreeNode root, int sum, int current, List list, List> result){ if(root == null) return; current += root.val; list.add(root.val); if(root.left == null && root.right == null && sum == current){ List copy = new ArrayList(list); result.add(copy); return; } if(root.left!=null){ dfs(root.left,sum,current,list,result); list.remove(list.size()-1); } if(root.right!=null){ dfs(root.right,sum,current,list,result); list.remove(list.size()-1); } } }