二叉搜索树的数量

时间:2018-09-03 17:00:24

标签: algorithm data-structures tree

具有20个节点且元素1,2,3,...,20的二叉搜索树的数目是多少,使得树的根为12,左子树的根为7? a)2634240 b)1243561 c)350016 d)2642640

解释和答案将很有帮助。

我已经应用了加泰罗尼亚语数字公式,但是从选项中得出的结果是不合适的,因此请确保这一点。

2 个答案:

答案 0 :(得分:5)

使用Catalan numbers,用n节点计数完整的二叉树,答案将是d) 2642640 = 14 * 132 *1430。这就是从每个树扩展(子)树的可能性我们未知的子树。

           12
          /  \
         7    (8 nodes)
        / \
(6 nodes) (4 nodes)


更新

正如马克·迪金森(Mark Dickinson)在以下评论中所建议的,以澄清:上图中和第一条语句中提到的“节点”是“内部”节点,我们以各种方式对其进行了排列,而{{1} }第一个加泰罗尼亚语编号正在计数具有n个叶节点的完整二叉树Binary trees with l leaf nodes have l - 1 internal nodes

答案 1 :(得分:1)

  • 这基本上是希望您为一定数量的节点计算唯一BST的数量。

  • 最后,最终结果将是这些数字的乘积。

  • 如果这是考试,那么您将必须进行乘法。否则,您可以使用-1.0e-05 1.0e-05 1.4e-05 -120000.0 1 1.0 以编程方式解决此问题。

代码:

dynamic programming