Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. code
1
public
void pathSumHelper(TreeNode root,
int sum, List <Integer> sumlist, List<List<Integer>> pathlist){
2
if(root==
null)
3
return;
4 sumlist.add(root.val);
5 sum = sum-root.val;
6
if(root.left==
null && root.right==
null){
7
if(sum==0){
8 pathlist.add(
new ArrayList<Integer>(sumlist));
9 }
10 }
else{
11
if(root.left!=
null)
12 pathSumHelper(root.left,sum,sumlist,pathlist);
13
if(root.right!=
null)
14 pathSumHelper(root.right,sum,sumlist,pathlist);
15 }
16 sumlist.remove(sumlist.size()-1);
17 }
18
19
public List<List<Integer>> pathSum(TreeNode root,
int sum) {
20 List<List<Integer>> pathlist=
new ArrayList<List<Integer>>();
21 List<Integer> sumlist =
new ArrayList<Integer>();
22 pathSumHelper(root,sum,sumlist,pathlist);
23
return pathlist;
24 }