LeetCode 96. 不同的二叉搜索树

蓝咒 提交于 2020-01-13 07:48:32

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

算法:动态规划。我们用f[i]表示i个结点的BST有多少种。那么左子树可能为0,1,...n-1。对应的右子树则为n-1,...0。根据排列组合知,总数为f[k]*f[n-k-1]求和。

class Solution {
public:
    int numTrees(int n) {
        vector<int>f(n+1);
        f[0]=1;
        for(int i=1;i<=n;i++){
            f[i]=0;
            for(int j=1;j<=i;j++)
                f[i]+=f[j-1]*f[i-j];
        }
        return f[n];
    }
};

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!