96.不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
示例 1:

输入:n = 3
输出:5
示例 2:
输入:n = 1
输出:1
提示:
1 <= n <= 19
如图所示:

当n为3的时候有以下情况:
当1为头结点的时候,其右子树有两个节点
当2为头结点的时候,其左右子树都只有一个节点
当3为头结点的时候,其左子树有两个节点
元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量
元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量
元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量
由此可推出递归的规律。
java
public static void main(String[] args) { // 测试用
System.out.println(numTrees(3));
}
public static int numTrees(int n) {
int[] res = new int[n + 1];
res[0] = 1;
res[1] = 1;
for (int i = 2; i <= n; i++) {
int sum = 0;
for (int j = 1; j <= i; j++) {
sum = sum + res[j - 1] * res[i - j];
}
res[i] = sum;
}
System.out.println(Arrays.toString(res)); // 观测每个数量的不同二叉搜索树
return res[n];
}
以上为记录分享用,代码较差请见谅