在深度优先的后序列表中从列表构建BST而不反转列表

时间:2014-01-13 16:26:35

标签: tree binary-search-tree

从深度优先顺序中的元素列表重建BST的最简单方法是首先反转列表,然后使用稍微修改算法来构建树,以便从预订中构建一个。不幸的是,如果列表实际上是(有限的)流,那么执行此操作的内存要求可能会过高,效率肯定会超出窗口。因此,有趣的是找到一种更加渐进的方式来实现它。

当然,麻烦在于查看后序遍历的前几个元素并不一定会告诉您树的形状。如果你看到[2,1,...],那么你知道你有一个带有根1和右叶2的子树,但是如果你看到1,2那么你可以得出很少的结论。有人认为我可能会采用不确定性的解析技术来解决这个问题,但我无法正确地解决这个问题,或者找到一种避免不良情况的方法。

注意:如果答案包含代码,那么如果所述代码都在Haskell,Scheme或者SML中,那就太好了。

0 个答案:

没有答案