96不同的二叉搜索树
最近看到卡特兰数所以就拿LeetCode上一道题来练练,加强一下对卡特兰数的理解,但是这道题是卡特兰数最基本的n^2的推导。
什么是卡特兰数呢?
卡特兰数满足以下性质:
令h(0)=1,h(1)=1,catalan数满足递推式。h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)h(0) (n>=2)。也就是说,如果能把公式化成上面这种形式的数,就是卡特兰数。
当然,上面这样的递推公式太繁琐了,于是数学家们又求出了可以快速计算的通项公式。h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,…)。这个公式还可以更简单得化为h(n)=C(2n,n)/(n+1)。
先根据上述最繁琐的推导公式来解决这道题:
class Solution {
public:
int numTrees(int n) {
vector<