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