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];
}
给一个正整数n,求从1到n能构造多少种不同形状的二叉查找树(BST)
最新推荐文章于 2021-03-17 17:21:40 发布