/**
     * 
     * 给你一个整数 n ,
     * 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?
     * 返回满足题意的二叉搜索树的种数。
     * 
     */
 public int numTrees(int n) {
        //数组res存储n个节点对应的二叉搜索树的种类,比如n为1时,只有一种
        int[] res = new int[n + 1];
        res[0] = 1;
        res[1] = 1;
        //动态的将n之间的所有的二叉搜索树的种类全部存储到集合
        for (int i = 2; i <= n; i++) {
            //以i为根节点时,将其以j分为左右两颗子树
            for (int j = 1; j <= i; j++) {
                //将i为根节点的所有情况加起来
                res[i] += res[j - 1] * res[i - j];
            }
        }
        return res[n];
    }
原文:https://www.cnblogs.com/mx-info/p/14902029.html