问答题 设树b是一棵采用链接结构存储的二叉树,设计一个算法把树b的左子树和右子树进行交换的算法。
【正确答案】交换二叉树的左子树和右子树的递归模型如下: 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; }
【答案解析】