class Solution {
List<List<Integer>> list;
List<Integer> ans;
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
list = new ArrayList<>();
ans = new ArrayList<>();
if(root == null){
return list;
}
ans.add(root.val);
dfs(root,targetSum - root.val);
return list;
}
void dfs(TreeNode root,int target){
if(root == null){
return;
}
if(root.left == null && root.right == null && target == 0){
list.add(new ArrayList<Integer>(ans));
return;
}
if(root.left != null){
ans.add(root.left.val);
dfs(root.left,target - root.left.val);
ans.remove(ans.size() - 1);
}
if(root.right != null){
ans.add(root.right.val);
dfs(root.right,target - root.right.val);
ans.remove(ans.size() - 1);
}
}
}