【发布时间】:2015-08-14 22:15:53
【问题描述】:
我有 2 个二叉搜索树 T1 和 T2 具有相同数量的节点 n >= 1。对于每个节点 P,我们有 LEFT(P) 和 RIGHT(P) 用于节点之间的链接,KEY(P) 用于关闭节点。 T1 的根是 R1,T2 的根是 R2。 我需要一个 linear 算法来确定在 T1 和 T2 中都找到的值。
到目前为止,我的想法是对 T1 进行中序遍历并在 T2 中搜索当前元素,如下所示:
inorder(node)
if node is not NULL
inorder(LEFT(node))
if find(KEY(node), R2)
print KEY(node)
inorder(RIGHT(node))
其中find(KEY(node), R2) 在树 T2 中实现对 KEY(node) 的二分查找。
这是正确的解决方案吗?这是线性算法吗? (我知道遍历是 O(n) 复杂度)。或者,还有另一种方法可以让两棵二叉搜索树相交?
谢谢!
【问题讨论】:
-
您可以在 [此处][1] 找到一些答案。 [1]:stackoverflow.com/questions/30453721/…
标签: algorithm tree binary-search-tree complexity-theory