public class Solution {code
private ArrayList<ArrayList<Integer>> listAll = new ArrayList<ArrayList<Integer>>();rem
ArrayList<ArrayList<Integer>> all= new ArrayList<ArrayList<Integer>>();get
ArrayList<Integer> subset1 = new ArrayList<Integer>(); public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) { if(root==null) return all; //先把值添入 subset1.add(root.val); //target-g根的值 target = target-root.val; //找到一条路径,从根到叶节点,(根到叶节点的一步分不能算) if(target==0 && root.left==null && root.right==null) all.add(new ArrayList<Integer>(subset1)); //遍历左子树 FindPath(root.left,target); //遍历右子树 FindPath(root.right,target); //到叶节点后日后退一步(举个例子,假设到叶节点,(该节点为左子树),正好符合条件,填入,如今要判断该节点的父亲节点的右子树是否符合条件,是否是要后退一步,故subset1.remove(subset1.size()-1)) subset1.remove(subset1.size()-1); return all; }
}io