美文网首页
LC96 Unique Binary Search Trees

LC96 Unique Binary Search Trees

作者: Rookie118 | 来源:发表于2020-09-06 08:44 被阅读0次

    本题链接:Unique Binary Search Trees

    本题标签:Tree, Dynamic Programming

    本题难度:\color{Orange}{Medium}

    英文题目 中文题目

    方案1:

    
    class Solution {
    public:
        int numTrees(int n) {
            int *G = new int[n + 1]{0};
            G[0] = G[1] = 1;
            
            for(int i = 2; i <= n; ++i)
                for(int j = 1; j <= i; ++j)
                    G[i] += G[j - 1] * G[i - j];  
            return G[n];
        }
    };
    // G[0] = G[1] = 1
    // G[n] = F[1,n] + F[2,n] + ... + F[n,n]
    // F[i,n] = G[i-1] * G[n-i]
    // G[n] = G[0] * G[n-1] + G[1] * G[n-2] + ... + G[n-1] * G[0]
    // 卡特兰数。以1到n中的每一个数作为根节点,划分为左右BST子树,然后在左右BST子树中重复划分。这个过程的数学原理就是卡特兰数乘积和。
    

    时间复杂度:O ( N^2 )

    空间复杂度:O ( N )


    相关文章

      网友评论

          本文标题:LC96 Unique Binary Search Trees

          本文链接:https://www.haomeiwen.com/subject/mjnqektx.html