用 Python 编写一个程序来计算具有 n 个节点的 BST 的数量
pythonserver side programmingprogramming更新于 2025/12/24 13:00:17
假设我们有 n 个不同的节点。所有节点都是不同的。我们必须找出有多少种排列方式可以将它们排列成二叉搜索树。我们知道,对于二叉搜索树,左子树总是保存较小的值,而右子树保存较大的值。
为了解决这个问题,我们将找到 Catalan 数。Catalan 数 C(n) 表示具有 n 个不同键的二叉搜索树。公式如下
$$C(n)=\frac{(2n)!}{(n+1)!\times n!}$$
因此,如果输入为 n = 3,则输出将为 5,因为

为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 ncr() 。这将需要 n, r
- res := 1
- if r > n - r,然后
- r := n - r
- 对于 0 到 r - 1 范围内的 i,执行
- res := res *(n - i)
- res := floor of (res/(i + 1))
- 返回 res
- 从主方法,执行以下操作
- c := ncr(2 * n, n)
- 返回 c /(n + 1) 的下限
示例
让我们看看下面的实现以便更好地理解 −
from math import factorial def ncr(n, r): res = 1 if r > n - r: r = n - r for i in range(r): res *= (n - i) res //= (i + 1) return res def solve(n): c = ncr(2 * n, n) return c // (n + 1) n = 3 print(solve(n))
输入
3
输出
5
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

