【问题标题】:What are the total number of possible ordered trees with N nodes?有 N 个节点的可能有序树的总数是多少?
【发布时间】:2013-08-09 18:56:48
【问题描述】:

例如对于 N=3,我们可以通过将它们全部列出来轻松找到,但是当被要求提供任意 N 值时,我遇到了问题。

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于数学的。考虑将其发布到 math.stackexchange.com。
  • N=3 的答案是什么? 5 还是 12?你能具体说明你的意思是什么树吗?二叉树,或任意的。
  • 例如三个节点是a,b,c; abc、cba、bac、cab、acb、bca;其中中间元素是根,左右元素是它的左右节点。

标签: algorithm tree structure computer-science catalan


【解决方案1】:

如果您正在查看二叉树,那么正如 mcdowella 所说,Choose(2n,n)/(n+1)(加泰罗尼亚数)就是答案。

如果您正在查看任意树,那么它可能是 n。 n^(n-2) = n^(n-1),但我不完全确定。 Prufer's algo 告诉我们有 n^(n-2) 个标记的树,任何一个节点都可以作为根,因此我们得到数字 n^(n-1)。

【讨论】:

    【解决方案2】:

    这在 Knuth 第 1 卷(计算机编程的艺术:基本算法)第 2.3.4.4 节中有所介绍Knuth 找到 http://oeis.org/A000108

    【讨论】:

      【解决方案3】:

      你可以像这样使用动态编程:
      让我们fix element i as the root 的树。现在我们需要知道how many different trees 我们可以用the first (i-1) elements and the rest (n-i-1) elements 组成。
      所以我们对(i-1)(n-i-1)这两个子数组遵循相同的过程,得到以下递归:

      公式:

      乳胶:

      树[n]&space;=&space;\sum_{i&space;=&space;2}^{i&space;=&space;n-1}&space;Trees[i-1]*Trees[n-i-1]

      【讨论】:

        【解决方案4】:

        二叉树 (2n,n)/(n+1)(加泰罗尼亚数)作为答案 如果标记为树而不是 n^(n-2) 棵树。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-10
          相关资源
          最近更新 更多