public static ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
ArrayList<ArrayList<Integer>> lists=new ArrayList<>();
ArrayList<Integer> list=new ArrayList<>();
if(root==null) return lists;
pathDfs(root,target,lists,list);
return lists;
}
public static void pathDfs(TreeNode root,int target,ArrayList<ArrayList<Integer>> lists,ArrayList<Integer> list){
if(root==null)
return;
target=target-root.val;
list.add(root.val);
if(target==0&&root.right==null&&root.left==null){
lists.add(new ArrayList<>(list));
}
if(root.left!=null)
pathDfs(root.left,target,lists,list);
if(root.right!=null)
pathDfs(root.right,target,lists,list);
list.remove(list.size()-1);
}