JAVA解法
class Solution {
public int numTrees(int n) {
// 提示:我们在这里需要用 long 类型防止计算过程中的溢出
long C = 1;
// 卡塔兰数的计算公式
for (int i = 0; i < n; ++i) {
C = C * 2 * (2 * i + 1) / (i + 2);
}
return (int) C;
}
}
题解分析
这道题可以用 卡塔兰数 这种组合数学来解,是已给出推导的可行的解这类题的现成公式;也可以自己用递归实现。
leetcode原题:96. 不同的二叉搜索树
评论区