求解方法
用递归方法交换
void swap(BiTree T){
BiTree temp;
if(T){
swap(T->lchild);
swap(T->rchild);
temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
}
}
测试结果
测试环境
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxsize 100
//二叉树的创建序列
//ab#df###c#e##
//abd##e##cf###
typedef struct BiNode{
char date;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
BiNode* CreateBiTree();
void Traverse(BiNode *p);
void swap(BiTree T);
int main(){
BiTree t = CreateBiTree();
swap(t);
Traverse(t);
return 0;
}
//用递归的方法交换二叉树的左右子树
void swap(BiTree T){
BiTree temp;
if(T){
swap(T->lchild);
swap(T->rchild);
temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
}
}
//用递归方法以中序遍历的方式创建二叉树
BiNode* CreateBiTree(){
BiNode *p;
char a;
scanf("%c",&a);
if(a=='#')
p=NULL;
else{
p=(BiNode *)malloc(sizeof(BiNode));
p->date=a;
p->lchild=CreateBiTree();
p->rchild=CreateBiTree();
}
return p;
}
//递归方法中序遍历二叉树
void Traverse(BiNode *p){
if(p==NULL){
return;
}
else{
Traverse(p->lchild);
printf("%c",p->date);
Traverse(p->rchild);
}
return;
}