#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MaxSize 50
//算法思想:
//层次遍历,先让一个元素入队,让它出队的时候,通过p = queue[++front]拿到了这个元素,交换其左右
//子树
//然后进行下一轮……就这样一个一个地换。
void exchangeByLevel(BiTree &T){
BiTree queue[MaxSize],p = T,temp;
int front = -1,rear = -1;
queue[++rear] = p;
while(front != rear){
p = queue[++front];
temp = p->lchild;
p->lchild = p->rchild;
p->rchild = temp;
if(p->lchild)
queue[++rear] = p->lchild;
if(p->rchild)
queue[++rear] = p->rchild;
}
}
//递归版:
//用后续遍历版的递归,最好不要用先序,不好
void exchangeByPost(BiTree T){
if(T){
exchangeByPost(T->lchild);
exchangeByPost(T->rchild);
BiTree temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
}
}