给一个正整数n,求从1到n能构造多少种不同形状的二叉查找树(BST)

int UniqueBSTNumber(int n)
{
    vector<int> f(n+1, 0);  //f[i]表示1到i能形成的不同形状的BST个数
    f[0] = 1;   //空树
    f[1] = 1;
    for (int i = 2; i <= n; i++)
    {
        for (int j = 1; j <= i; j++)    //遍历1到i,分别为根的情况
        {
            f[i] += f[j-1] * f[i-j];    //左子树个数*右子树个数
        }
    }
    return f[n];
}

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/wwj_ff/article/details/46358979
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞