1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { private final List<List<Integer>> ans = new LinkedList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum) { dfs(root, new LinkedList<>(), sum); return ans; }
private void dfs(TreeNode root, List<Integer> path, int sum) { if (root == null) { return; }
List<Integer> branch = new LinkedList<>(path); branch.add(root.val); if (isLeaf(root) && branch.stream().reduce(0, Integer::sum) == sum) { ans.add(branch); return; } dfs(root.left, branch, sum); dfs(root.right, branch, sum); } private boolean isLeaf(TreeNode node) { return node.left == null && node.right == null; } }
|