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