我在一些旧考试中看到了一些伪代码,我无法弄清楚它在做什么。
有人可以向我解释一下吗?
A和B是BST。
Foo(A,B)
if A= NULL
return B
if B != NULL
if value[A] > value[B]
return Foo(B,A)
left[B] <- Foo(right[A],left[B])
right[A] <- B
return A
答案 0 :(得分:1)
这是二叉搜索树合并例程。如果A
或B
为空(表示空树),则返回另一个。否则,它确保A
的根小于B
的根;如果根的顺序错误,则使用交换的参数进行递归。然后,它递归地合并A
的右子树和B
的左子树,并将结果作为B
的左子树附加。最后,它将B
附加为A
的新右子树并返回A
。