【发布时间】:2012-10-04 13:07:50
【问题描述】:
我对不同站点上的许多文章感到非常困惑,这些文章涉及从任何一个遍历(pre、post 或in-order)或其中任何两个的组合构造一个Binary Search Tree。例如,在this 页面,它说给定pre、post 或level 顺序遍历,连同in-order 遍历,可以构造BST。但是here 和there,它们向我们展示了仅从pre-order 构造一个BST。此外,here 他们向我们展示了如何从给定的pre 和post-order 遍历构造BST。在其他一些站点中,我找到了一个仅从 post-order 遍历构造 BST 的解决方案。
现在我知道给定inorder 和pre-order 遍历,可以唯一地形成BST。至于我提供的第一个链接,虽然他们说我们不能从pre-order 和post-order 构造BST,但我不能只对post-order 数组进行排序以获得它的inorder 遍历,并且然后使用它和pre-order 数组形成BST?这与第四个链接中的解决方案相同还是不同?并且仅给定pre-order,我可以对其进行排序以获得in-order,然后使用它和pre-order 获得BST。同样,这必须与链接 2 和 3 的解决方案不同吗?
具体来说,什么足以唯一地生成BST?如果不需要唯一性,那么我可以简单地对其进行排序以获取 in-order 遍历,并从中递归地构建 N 个可能的 BSTs 之一。
【问题讨论】:
标签: algorithm binary-search-tree inorder postorder preorder