1996-d-五

/**
	交换二叉树每个结点左右孩子节点(非递归算法)
	算法的基本思想:
	1.判断根节点地址是否为空,为空返回
	2.将结点放入顺序队列中,每次出队一个结点
	3.交换该节点的左右孩子结点,并将孩子结点插入队尾 
**/
void change(BTNode *p){
	if(p==null) retrun;//判断树是否为空 
	BTNode *queue[maxSize];//定义一个队列用于存储结点 
	BTNode *out,*temp;//out为出队指针、temp用于交换左右子树 
	int front=0;//队列头尾 
	int rear=0;
	queue[front]=p;//初始化队列 
	queue[rear]=p;
	//循环交换左右子树 
	while(rear<front) {
		out=queue[front++]; //出队 
		//交换左右子树 
		temp=out->lchild;
		out->lchild=out->rchild;
		ouot->rchild=temp;
		//将交换完成结点插入队列
		if(out->lchild!=NULL) 
		queue[++rear]=out->lchild;
		if(out->rchild!=NULL)
		queue[++rear]=out->rchild;
	}
}
/**
	递归算法 
**/
void change(BTNode *p){
	if(p==NULL)return;
	BTNode *temp;
	temp=p->lchild;
	p->lchild=p->rchild;
	p->rchild=temp;
	change(p->lchild);
	change(p->rchild);
}