Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tree 给定要插入到空二叉搜索树中的值序列,可以通过多少种方式重新排列该序列以到达同一棵树?_Tree_Binary Search Tree - Fatal编程技术网

Tree 给定要插入到空二叉搜索树中的值序列,可以通过多少种方式重新排列该序列以到达同一棵树?

Tree 给定要插入到空二叉搜索树中的值序列,可以通过多少种方式重新排列该序列以到达同一棵树?,tree,binary-search-tree,Tree,Binary Search Tree,假设序列是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

假设序列是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是一样的。这将适用于树中的每个父子关系。我只是很难搞清楚递归和组合

假设树中的所有条目都不同,答案由树的钩长公式给出。这只取决于树的形状

内容如下:

可能的阵列数=n!/乘积(子树的节点数)

其中n是完整树的节点数。 例如,对于您的树:

       10
     /   \
    5     4
     \   / \
      4 1   2
     /      / 
    3      1
   / \
  1   1
结果是10!/(10*5*4*4*3*2*1*1*1=756

这是Knuth计算机编程艺术第3卷:搜索和排序的练习