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)
最新推荐文章于 2022-12-14 16:53:45 发布
本文介绍了一种使用动态规划算法来计算在给定节点数量下,可以形成的具有不同形状的二叉搜索树(BST)的数量的方法。通过初始化一个向量存储从1到n能形成的不同BST的数量,并利用迭代方式填充该向量。
&spm=1001.2101.3001.5002&articleId=46358979&d=1&t=3&u=2cb884f959a8403598c410aac503d8d1)
3619

被折叠的 条评论
为什么被折叠?



