import java.util.ArrayList; public class BinarySumII {     private static ArrayList<Integer> list=new ArrayList<Integer>();     private static ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();     public static ArrayList<ArrayList<Integer>> findPath(TreeNode root,int target){         if (root==null){             return lists;         }         target-=root.val;         list.add(root.val);         if (target==0&&root.left==null&&root.right==null){             int i=0;             while (i<lists.size()&&list.size()<lists.get(i).size()){                 i++;             }             lists.add(i,new ArrayList<>(list));         }else {             findPath(root.left,target);             findPath(root.right,target);         }         list.remove(list.size()-1);         return lists;     } //这是我的代码,简单的递归,注意最后要  list.remove(list.size()-1);如果没找到,则删除,牛客还要求要路径长的放在前面,所以简单判断一下就ok了。