解答:
要实现一个二元树的镜像树,主要思路是交换每个节点的左子树和右子树。可以基于中根遍历来调整递归的顺序,交换左子树和右子树。伪代码如下:
Procedure SWAPTREE(T)
//T是当前的数节点,每个结点有三个信息:LCHILD、DATA、RCHILD
if T≠0 then
//先递归处理右子树
call SWAPTREE(RCHILD(T))
//交换当前结点的左、右子树
temp ← LCHILD(T)
LCHILD(T) ← RCHILD(T)
RCHILD(T) ← temp
//递归处理左子树
call SWAPTREE(LCHILD(T))
// 可以选择调用 VISIT 访问当前节点
call VISIT(T)
endif
end procedure