使用i节点计算二叉树的数量

时间:2011-12-31 01:29:31

标签: binary-tree catalan

bi为具有i个节点的二叉树的数量。计算b10

这是我遇到的问题。

到目前为止我能够提出这些:

B0=1
B1=1
B2=2
B3=5
B4=12 

随着我变大,它会很快变得有点过分。

有人能想出一种更好的计算Bi的方法,而不仅仅是绘制树木并计算它们吗?

1 个答案:

答案 0 :(得分:1)

我在OEIS中输入了你的答案,并得出了一些结果。

一个有希望的结果是A000669 - 具有n片叶子的系列减少的种植树的数量。提供以下示例:a(4)= 5,其中包含以下系列减少的种植树:(oooo),(oo(oo)),(o(ooo)),(o(o(oo))),( (OO)(OO))。也就是说,我们的树木不一定是种植的。

然而,经过一些工作后,我必须告诉你,你对B4的价值是不正确的 - 正确答案是14.然后答案是明确的:the Catalan numbers。加泰罗尼亚语数字计算的内容很奇怪,包括你在这里提出的问题(通过Wolfram)。值得注意的是加泰罗尼亚数字身份(8) - 定义加泰罗尼亚数字的重现。这个求和可以被认为是决定节点左边的节点数(其余节点将在右边)。

更简单的概念化方法是使用Dyck单词。让X表示左括号'而Y表示' 0'。 (我使用树的列表表示 - 左边的节点是元素左边的列表,反之亦然;如果节点没有左侧或右侧列表,则认为是叶子。)我们将在适当的位置放入右括号。那么B3的树木如下:

(((0)0)0)=> X X X Y Y Y

((0)0(0))=> X X Y Y X Y

(0(0(0)))=> X Y X Y X Y

((0(0))0)=> X X Y X Y Y

(0((0)0))=> X Y X X Y Y

来自维基百科,这种形式的五个2n长Dyck单词是XXXYYY,XYXXYY,XYXYXY,XXYYXY和XXYXYY。最后,封闭形式

  Bn = (1 / (n + 1)) * (2n choose n) = (2n!)/((n+1)!(n!))