/**
*
* 给你一个整数 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