自学内容网 自学内容网

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)!