import java.util.*;
public class Solution {
/**
*使用 卡特兰数(Catalan)公式
* @param n int整型
* @return int整型
*/
public int numTrees1 (int n) {
int num = 1;
for (int i = 0; i < n; i++) {
num = 2 * (2 * i + 1) * num / (i + 2);
}
return num;
}
/**
循环 或者递归处理 以 i 为根的 BST 数量为 C(i-1) × C(n-i)
*/
public static int numTrees (int n) {
int[] arr = new int[n + 1];
arr[0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
arr[i] += arr[j - 1] * arr[i - j] ;
}
}
return arr[n];
// write code here
}
}



京公网安备 11010502036488号