具有N个节点的可能有序树的总数是多少?

时间:2013-08-09 18:56:49

标签: algorithm tree structure computer-science catalan

例如,对于N = 3,我们可以通过列出所有内容轻松找到,但当被要求任意N值时,我面临问题。

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

Knuth Vol 1(计算机程序设计:基础算法)一节2.3.4.4大约半页的数学给你选择(2n,n)/(n + 1)并搜索序列Knuth找到了http://oeis.org/A000108

答案 2 :(得分:0)

您可以使用动态编程来实现这一目标:
我们是树的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)执行相同的过程以获得以下重复:

<强>公式:

enter image description here

<强>乳胶

  

树[N]&安培;空间; =&安培;空间; \ sum_ {I和空间; =&安培;空间; 2} ^ {I和空间; =&安培;空间; N-1}&安培;空间;树[I-1] *树[NI-1]

答案 3 :(得分:0)

二叉树(2n,n)/(n + 1)(加泰罗尼亚语号)作为答案   如果标记树比n ^(n-2)树。