计算二叉树具有 n 个结点不同形态的树的数量,
有个卡特兰数是怎么计算的啊,
具有 n 个结点的二叉树的形态数量可以表示为 Cn,其中 Cn 表示卡特兰数。其计算公式如下:
C0 = 1
Cn+1 = (4n + 2)/(n + 2) * Cn
代码如下:
#include <stdio.h>
// 计算卡特兰数
unsigned long long catalan(unsigned int n) {
if (n == 0) {
return 1;
}
unsigned long long c = 0;
for (int i = 0; i < n; i++) {
c += catalan(i) * catalan(n - i - 1);
}
return c;
}
int main() {
unsigned int n;
printf("请输入结点数 n:");
scanf("%u", &n);
printf("%u 个结点的二叉树的不同形态数量为:%llu\n", n, catalan(n));
return 0;
}