二叉树:交换所有结点的左右子树(递归)

题目:设树B是一棵采用链式结构存储的二叉树,编写一个把树中所有结点的左右子树交换的函数。
分析:如图,题目的意思就是这样。
二叉树:交换所有结点的左右子树(递归)_第1张图片
其中交换左右子树需要借助第三个变量,就像交换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;
	}
}

你可能感兴趣的:(数据结构,算法,b树,数据结构)