让我们说序列是8,3,10,7,9,12,5,11,4,6。结果树看起来像:
8
/ \
3 10
\ / \
7 9 12
/ /
5 11
/ \
4 6
这个序列可以重新排序多少种可能的方法,以便最终结果是完全相同的树?例如,8,10,3,7,9,12,5,11,4,6是一个答案。
到目前为止,我认为对于每个子树,两个兄弟姐妹的顺序并不重要。所以2,1,3与2,3,1相同。这适用于树中的每个父子。我很难搞清楚递归和组合。
答案 0 :(得分:0)
假设树中的所有条目都不同,答案由树的钩长公式给出。它只取决于树的形状。
它的内容如下:
可能的数组= n! / product(子树的节点数)
其中n是完整树的节点数。 例如,对于您的树:
false
true
false
true
true
false
结果是10! /(10 * 5 * 4 * 4 * 3 * 2 * 1 * 1 * 1 * 1)= 756
这是Knuth Art of Computer Programming第3卷:搜索和排序。