给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

    叶子节点 是指没有子节点的节点。

    image.png

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. List<List<Integer>> res = new ArrayList<>();
    18. List<Integer> list = new ArrayList<>();
    19. public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
    20. helper(root, targetSum);
    21. return res;
    22. }
    23. public void helper (TreeNode root, int sum) {
    24. if (root == null) return;
    25. sum = sum - root.val;
    26. list.add(root.val);
    27. if (root.left == null && root.right == null && sum == 0) {
    28. res.add(new ArrayList<>(list));
    29. }
    30. helper(root.left, sum);
    31. helper(root.right,sum);
    32. list.remove(list.size() - 1);
    33. }
    34. }

    image.png

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/path-sum-ii