计算给定解的时间复杂度

时间:2021-05-29 19:31:40

标签: c++ algorithm recursion data-structures time-complexity

我正在尝试 leetcode 问题 - 给定一个整数 n,返回所有结构唯一的 BST(二叉搜索树),它正好有 n 个具有从 1 到 n 的唯一值的节点。以任何顺序返回答案。 约束: 1 <= n <= 8 我已经编写了解决方案并被接受。我发现很难计算时间复杂度。

代码如下

class Solution {
public:
    
    vector<TreeNode*> solve(int s, int e){
        
        vector<TreeNode*> v; 
        if(s > e){
            v.push_back(NULL); 
        }
        for(int i = s; i<=e; i++){
            vector<TreeNode*> l = solve(s,i-1); 
            vector<TreeNode*> r = solve(i+1,e); 
            for(auto j : l){
                TreeNode*left = j; 
                for(auto k : r){
                    TreeNode*right = k; 
                    TreeNode*node = new TreeNode(i); 
                    node->left = j; 
                    node->right = k; 
                    v.push_back(node); 
                }
            }
        }
        return v; 
        
    }
    
    vector<TreeNode*> generateTrees(int n) {
        
        return solve(1,n); 
        
    }
};

我的观察-
没有递归调用 - n
我发现它的顺序 - n (2(n^3)*n^2)

0 个答案:

没有答案