2021年9月12日09:04:01
2021年9月12日09:27:52

可以把 sum 优化掉、
res.add(new ArrayList<integer>(temp));
注意添加的时候不能 res.add(temp)</integer>

他添加的结果会根据temp变化(只加入了temp的头结点) 所以需要新建一个 列表 初始化

temp.remove(temp.size() - 1); remove最后一个

2.

import java.util.ArrayList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
        ArrayList<Integer> temp = new ArrayList<Integer>();
        curpath(root,target,temp);
        return res;

    }

    public void curpath(TreeNode root,int target, ArrayList<Integer> temp){
        if(root == null) return ;

        temp.add(root.val);
        target = target - root.val;
        if(root.left == null && root.right == null && 0 == target){
            res.add(new ArrayList<Integer>(temp));
        }
        curpath(root.left, target, temp);
        curpath(root.right, target, temp);

        temp.remove(temp.size() - 1);
        return ;
    }

}

1.

import java.util.ArrayList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
        ArrayList<Integer> temp = new ArrayList<Integer>();
        curpath(root,0,target,temp);
        return res;

    }

    public void curpath(TreeNode root, int sum, int target, ArrayList<Integer> temp){
        if(root == null) return ;

        temp.add(root.val);
        sum = sum + root.val;
        if(root.left == null && root.right == null && sum == target){
            res.add(new ArrayList<Integer>(temp));
        }
        curpath(root.left, sum, target, temp);
        curpath(root.right, sum, target, temp);

        temp.remove(temp.size() - 1);
        return ;
    }

}