0

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

4

4 回答 4

2

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

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

于 2013-08-11T02:24:34.290 回答
0

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

于 2013-08-09T19:12:13.020 回答
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)获得以下递归:

公式:

在此处输入图像描述

乳胶:

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

于 2013-08-10T07:21:56.977 回答
0

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

于 2015-10-16T19:55:59.890 回答