我能够找到许多树的实现,例如,
http://sujitpal.blogspot.com/2006/05/java-data-structure-generic-tree.html
现在我正在寻找Java中统一递归树的实现。本文解释了统一递归树的细节。 http://www.sciencedirect.com/science/article/pii/S0022247X05004191
提前感谢您的帮助。
答案 0 :(得分:0)
实际上,这并不难实现。您基本上从一个n-ary树开始,所有您需要做的就是弄清楚如何将一个节点作为子节点添加到树中的一个现有节点。
对于具有k
个节点的树,新节点k + 1
可以成为前一个k
节点中任何一个节点的子节点(即集合中的任何节点{{} 1}})。
您需要的是树中当前存在的所有节点的列表。我认为这是{1, 2, ..., k}
数据结构中的一个单独的内部结构。然后你必须弄清楚如何选择树的一个节点。这是通过概率函数完成的。我发现这部分有点不清楚,这主要是因为我忘记了很多我的概率(我讨厌学校的概率)。但是本文确实解释了如何计算概率。基本上你有一系列概率质量函数。因此,如果您有一个节点Tree
,然后是一个节点1
,则节点2
将附加到节点2
(因为{{1}只有一个节点被附加到)。节点1
将以概率2
或节点3
附加到节点1
,概率为p(2, 1)
。你需要确定的是:
2
和
p(2, 2)
一个简单的实现是简单地从现有节点列表中随机选择一个节点。