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 } }