List<List<Integer>> results = new ArrayList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<Integer> list = new ArrayList<>();
dfs(root, sum, list);
return results;
}
private void dfs(TreeNode root, int sum, List<Integer> list) {
if (root == null) {
return;
}
int value = root.val;
System.out.println(value);
list.add(value);
sum -= value;
if (root.left == null && root.right == null) {
results.add(new ArrayList<>(list));
}
if (root.left != null) {
dfs(root.left, sum, list);
}
if (root.right != null) {
dfs(root.right, sum, list);
}
list.remove(list.size() - 1);
}