2013-10-25 48 views
0

我解决我的家庭作业的数据结构和算法课程,我碰到这个问题来了:建立二叉树出给定遍历

“给定两个穿越的方法可以预购和后序,预购和有序,后序和有序,我们可以提取多少二叉树?“

现在我知道你当然无法从一个遍历顺序中找到二叉树,但是这两个遍历中的哪一个只会给你一个二叉树?如何 ?以及那些没有举例说明一棵二叉树的地方,它们有多少二叉树可以作为例证,我们如何计算这个数字?

+3

这个问题是来自计算机科学作业的问题,不涉及编程,因此是题外话题。 – HaskellElephant

回答

1

我相信this source很有用。树的前置和后置遍历不足以在没有进一步限制的情况下唯一地重构它。然而,一个算法展示了如何从它的后序重构树并按顺序进行并且最后一种情况有些对称我认为这是算法证明了一棵树可以从它的inorder和任何其他遍历中唯一地重构。

+0

但你确定给定任何两个遍历方法,我只能找到一个确切的二叉树?你有什么简单的证明? –

+0

其实我没有,但我已经为编程竞赛的两个案例创建了一个算法(我认为是前后订单以及预购)。因为我相信第三个有点勉强,所以我认为这是一个算法证明 –

+0

我在某个地方读了一个有序的参与,你不能生成一棵树!所以你也不太确定你呢? –