【问题标题】:Compute the number of binary trees with i nodes计算具有 i 个节点的二叉树的数量
【发布时间】:2012-01-30 22:06:53
【问题描述】:

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

这是我遇到的一个问题。

到目前为止,我已经想出了这些:

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

随着我变大,它很快变得有点太多了。

除了画出树并计算它们之外,谁能想出更好的方法来计算 Bi?

【问题讨论】:

标签: binary-tree catalan


【解决方案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 和 XXYYYY。最后是封闭式

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多