力扣 题目96- 不同的二叉搜索树
题目
题解
参考95题的思路 进行排列组合
即以o(n)=o(i - 1)*o(n-i)的加和--i循环属于[1,n] ;
也就是需要从1开始然后向上算到n
for (int j = 1; j <= n;j++ ) { int num = 0; for (int i = 1; i <= j; i++) { num += res[i - 1] * res[j - i]; } res.push_back(num); }
题目
1 #include<iostream> 2 #include<vector> 3 #include<stack> 4 using namespace std; 5 class Solution { 6 public: 7 int numTrees(int n) { 8 if (n) { 9 vector<int>res = {1}; 10 for (int j = 1; j <= n;j++ ) { 11 int num = 0; 12 for (int i = 1; i <= j; i++) { 13 num += res[i - 1] * res[j - i]; 14 } 15 res.push_back(num); 16 } 17 return res.back(); 18 } 19 else return 0; 20 } 21 }; 22 23 24 25 int main() { 26 Solution sol; 27 int result = sol.numTrees(19); 28 cout << result << endl; 29 }