public void generatePath(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> path, TreeNode root, int sum) {
        path.add(root.val);
        if(root.left==null&&root.right==null){
            if(root.val==sum){
                result.add(new ArrayList<Integer>(path));
                return;
            }
            else {
                return;
            }
        }
        if(root.left !=null) {
            generatePath(result, path, root.left, sum-root.val);
            path.remove(path.size()-1);
        }
        if(root.right!=null) {
            generatePath(result, path, root.right, sum-root.val);
            path.remove(path.size()-1);
        }
    }