96. 不同的二叉搜索树c

int numTrees(int n) {
int* dp=(int*)malloc(sizeof(int)*(n+3));
for(int i=0;i<n+3;i++) dp[i]=0;
dp[0]=1,dp[1]=1;
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){//左子树j-1 个,右子树i-j个
dp[i]+=dp[j-1]*dp[i-j];
}
}
return dp[n];
}
結果:

浙公网安备 33010602011771号