可以从n个不同的元素构建多少个二叉搜索树?我们怎样才能找到一个经过数学证明的公式?
示例: 如果我们有3个不同的元素,比如1,2,3,那里 是5个二叉搜索树。
答案 0 :(得分:40)
给定n个元素,可以从这些元素生成的二叉搜索树的数量由第n Catalan number(表示为C n )给出。这等于
直观地说,加泰罗尼亚语数字表示您可以通过以下方式从n个元素中创建结构的方式的数量:
此模式完全匹配您可以从一组n个元素构建BST的方式。选择一个元素作为树的根。所有较小的元素必须向左移动,所有较大的元素必须向右移动。然后,您可以从左侧和右侧的元素中构建较小的BST,然后将它们与根节点融合在一起以形成整体BST。使用n个元素执行此操作的方法数由C n 给出,因此可能的BST数由第n个加泰罗尼亚数给出。
希望这有帮助!
答案 1 :(得分:9)
我确信这个问题不仅仅是使用数学公式计算。我花了一些时间编写程序以及计算背后的解释或想法。
我尝试用递归和动态编程来解决它。希望这会有所帮助。
该公式已存在于上一个答案中:
因此,如果您有兴趣学习解决方案并理解应用程序,您可以随时查看我的文章Count Binary Search Trees created from N unique elements
答案 2 :(得分:1)
设T(n)为n个元素的嵌套数。
给定n个不同的有序元素,编号为1到n,我们选择i作为根。
这在T(i-1)组合的左子树中留下(1..i-1),在T(n-i)组合的右子树中留下(i + 1..n)。
因此:
T(n) = sum_i=1^n(T(i-1) * T(n-i))
当然T(1)= 1