用标准遍历确定BST的结构等价性

时间:2013-07-26 08:39:04

标签: algorithm search data-structures tree catalan

是否可以仅根据遍历,预订,顺序和后序的结果来确定两个二叉搜索树的结构等价性。假设我只有所有遍历的结果数组。我知道为了单独遍历,无法帮助。但是,我无法想象其他遍历结果。我理解BFS的帮助。我想知道前后订单遍历。如果可能的话,请在此发布任何链接。

2 个答案:

答案 0 :(得分:3)

答案是:您可以从其预订遍历中恢复二进制搜索树

我不确定你的数学背景是什么,所以请问你是否需要更多解释。

为简单起见,我假设节点标有整数1,2 ... n,其中n是节点数。然后,树t的预先遍历给出了[n] = {1,2,...,n}的排列,它具有特定的属性:每次在排列中都有一个字母b时,你找不到两个连续的字母{{1}在排列中的ca之后b。据说这种排列避免模式a<b<c(代表任意数量的字母)。

例如,4 2 1 3避免了b-ac,而3 1 4 2则没有因为3 - 4 2。

这实际上是等价的:置换是树的预先读取iff是避免b-ac。

众所周知,存在大小为n的树与排列避免b-ac一样多,所以这是一个双射。他们的号码被称为加泰罗尼亚号码。你可能会发现这是斯坦利的书“enumerative combinatorics”的练习。

这是一个更算法的解释

b-ac

结果

当且仅当两个二叉搜索树具有相同的预订遍历时,它们是相等的

对你有意义吗?

更多参考资料

答案 1 :(得分:0)

在BST中,您可以离开孩子(L),右孩子(R)或上(U)。然后可以通过{L,R,U}上的字符串来描述遍历,例如。 “LLURUURLURUU”。对于具有等效结构的BST,这些字符串将是相同的。