【正确答案】交换二叉树的左子树和右子树的递归模型如下:
f(b,t)→t=NULL若b=NULL
f(b,t)→复制根结点b产生t,其他情况
f(b→left,t1),f(b→right,t2),
t→left=t2,t→right=t1
因此,实现本题功能的代码如下:
BTree *swap(BTree *b)
{
BTree *t,*t1,*t2;
if(b=NULL)
t=NULL;
else
{
t=(BTree *)malloc(sizeof(BTree));
//复制一个根结点
t→data=b→data;
t1=swap(b→left);
t2=swap(b→right);
t→left=t2;
t→right=t1;
return t;
}
【答案解析】