给定一个值n,请生成所有的存储值1...n.的二叉搜索树(BST)的结构
例如:
给定n=3,你的程序应该给出下面五种不同的二叉搜索树(BST)

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; left = null; right = null; }
 * }
 */
import java.util.ArrayList;
public class Solution {
    public ArrayList<TreeNode> help(int start, int end){
        ArrayList<TreeNode> result = new ArrayList<TreeNode>();
        if(start> end){
            result.add(null);//关键的地方在这里,真的很关键,解决有有一遍子树为null的情况
            return result;
        }
        for(int i=start; i<= end; i++){
            ArrayList<TreeNode> resultLeft = help(start, i-1);
            ArrayList<TreeNode> resultRight = help(i+1, end);