我有2個二叉搜索樹T1和T2,節點數n> = 1。對於每個節點P,我們有節點和KEY(P)之間的鏈接的LEFT(P)和RIGHT(P)對於節點的價值。 T1的根是R1,T2的根是R2。 我需要一個線性算法,它將確定在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(節點)的二進制搜索。
這是正確的解決方案嗎?這是一個線性算法嗎? (我知道遍歷是O(n)複雜度)。或者,還有另一種方法來交叉2個二叉搜索樹?
謝謝!
你可以找到一些答案[這裏] [1]。 [1]:http://stackoverflow.com/questions/30453721/what-is-the-optimal-way-to-find-common-nodes-in-two-bst/30453904#30453904 –