#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char c;
scanf("%c",&c);
if(c==' ')
{*T=NULL;}
else
{
*T=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=c;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
void ReverseLeftRightChild(BiTNode **T)
{
BiTNode *p;
if (*T == NULL)
{
return;
}
p=(*T)->lchild;
(*T)->lchild=(*T)->rchild;
(*T)->rchild=p;
ReverseLeftRightChild(&((*T)->lchild));
ReverseLeftRightChild(&((*T)->rchild));
}
void PreOrderTravel(BiTree T)
{
if(T)
{
PreOrderTravel(T->lchild);
PreOrderTravel(T->rchild);
printf("%c",T->data);
}
}
int main()
{
BiTree T=NULL;
printf("请添加结点数据,伪结点用空格表示,输入多个空格结束程序:");
CreateBiTree(&T);
printf("未交换之前结果(后序遍历):\n");
PreOrderTravel(T);
ReverseLeftRightChild(&T);
printf("交换之后结果(后序遍历):\n");
PreOrderTravel(T);
return 0;
}