题目:设树B是一棵采用链式结构存储的二叉树,编写一个把树中所有结点的左右子树交换的函数。
分析:如图,题目的意思就是这样。
其中交换左右子树需要借助第三个变量,就像交换a,b。令c=a,a=b,b=c。
算法思想:采用递归法,抽象化。递归地交换左右子树。
代码:
void swap(BiTree T){ // 只传了一个根结点T
if(T!=NULL){
swap(T->lchild); // 递归地交换左子树
swap(T->rchild); // 递归地交换右子树
temp=T->lchild; // 和交换ab的方法一样,借助temp完成交换
T->lchild=T->rchild;
T->rchild=temp;
}
}