点击打开链接
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<limits.h>
#include<assert.h>
#include<sstream>
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
int numTrees(int n) {
vector<int> result;
result.push_back(1);//只有一个节点
result.push_back(1);//有两个节点1、2。 二叉树有两种
for(int i=2;i<=n;i++){
int sum=0;
//计算含i个结点时二叉查找树的种类数,j表示1~i中取任一结点作为根。
for(int j=0;j<=i;j++){
sum+=(result[j-1]*result[i-j]); //左树*右树 实现递推公式
}
result.push_back(sum);
}
return result.back();
}
};
int main()
{
Solution temple;
return 0;
}