2014-09-05 58 views
0

我发现如果我们有Preorder和Inorder Traversal,我们有一棵独特的树。预订和与Inorder遍历的关系

我可以得出结论:

对于每一根遍历,我们有多个序遍历。这是真的还是假的结论?每个人都会帮助我并添加一些细节。

再次感谢。

回答

2

是的,因为从一个预订序列中可以创建多个树。例如:[4,3,1,2]可以被重新定义为具有根4,子3和2的树。然后,您可以插入1作为3的左侧或右侧子视图。根据要插入的位置,顺序会改变。

你也可以这样推理:你有n数字,他们可以得到n!排列。如果排列的数量等于可以使用这些数字创建的树的数量,则可以从遍历生成树。事实并非如此,但正如你可以创建许多树,每个节点只有一个左边的孩子或者只有一个正确的孩子,这会给你2 * n!而且还有更多,所以必须有一个排列可以产生多于一棵树=>多于一次的遍历。

这在一般情况下当然是正确的,BST具有唯一的顺序序列。

+0

所以我们可以说,一个预购是对应一个订单是假的? – user153695 2014-09-05 06:26:21

+0

一般情况下,是的。如果我们正在讨论BST,那么1个前序就相当于1个中序。 – 2014-09-05 06:30:46

+0

非常感谢...添加+投票了。 – user153695 2014-09-05 06:36:02

0

真, 例如: 给出的前序遍历 ABDEC

 a 
    /\ 
    b c 
/\ 
    d e 

许多序遍历是可能的: baedc, dbeac 等等...