#include <stdio.h>
#include <stdlib.h>
#include "bitree.h"
#include "sqstack.h"
void exchange ( BiTree T ) ; // 实现二叉树左右子树的交换(非递归法)
int main()
{
BiTree T;
CreateBiTree(T);
printf("交换前二叉树中序遍历:");
InOrderTraverse(T,visit);
printf("\n");
exchange(T);
printf("交换后二叉树中序遍历:");
InOrderTraverse(T,visit);
printf("\n");
DestoryBiTree(T);
return 0;
}
void exchange(BiTree T)
{
// 实现二叉树左右子树的交换(栈实现)
/********** Begin *********/
SqStack S;
BiTree temp;
if(T){
InitStack(S);
Push(S,T);
while(!StackEmpty(S)){
Pop(S,T);
temp=T->lchild;
T->lchild=T->rchild;
T->rchild=temp;
if(T->lchild)
Push(S,T->lchild);
if(T->rchild)
Push(S,T->rchild);
}
}
/********** End **********/
}