408算法题leetcode--第36天
96. 不同的二叉搜索树
题目地址:96. 不同的二叉搜索树 - 力扣(LeetCode)
题解思路:dp
时间复杂度:O(n^2)
空间复杂度:O(n)
代码:
class Solution {
public:
int numTrees(int n) {
// dp[]: i个节点的二叉搜索树个数
// 转移:dp[i] = dp[j - 1] * dp[i - j],即左*右
// 初始化:dp[0] = 1
// 顺序:小到大
vector<int>dp(n + 1, 0);
dp[0] = 1;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
dp[i] += dp[j - 1] * dp[i - j];
}
}
// output
for(auto it : dp){
cout << it << ' ';
}
return dp[n];
}
};
原文地址:https://blog.csdn.net/weixin_58073817/article/details/142979256
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!