Path Sum (2 versions)

Path Sum 1

Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values along the path equals targetSum. A leaf is a node with no children.

class Solution {
int sum=0;
int target=0;
public boolean hasPathSum(TreeNode root, int targetSum) {
this.target=targetSum;
return sum(root,0);

}
public boolean sum(TreeNode root, int curr){
if(root!=null){
curr=curr+root.val;
if(root.left==null&&root.right==null){
return target==curr;
}
return sum(root.left,curr)||sum(root.right,curr);
}
return false;
}
}

Path Sum 2

Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where each path's sum equals targetSum. A leaf is a node with no children

class Solution {int target=0;
List<List<Integer>> ans;
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
ans= new ArrayList();
this.target=targetSum;
sum(root,0, new ArrayList());
return ans;

}
public void sum(TreeNode root, int curr,List<Integer> list){
if(root!=null){
curr=curr+root.val;
list.add(root.val);
if(root.left==null&&root.right==null){
if(curr==target){
ans.add(new ArrayList(list));
}
}
sum(root.left,curr,list);
sum(root.right,curr,list);
list.remove(list.size()-1);
}
return;
}
}