#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree *bt)//先序创建二叉树
{
char ch;
ch = getchar();
if(ch=='#') *bt=NULL;
else
{
*bt = (BiTree)malloc(sizeof(BiTNode));
(*bt)->data = ch;
CreateBiTree(&((*bt)->LChild));
CreateBiTree(&((*bt)->RChild));
}
}
void MidOrder(BiTree root)
{
if(root!=NULL)
{
MidOrder(root ->LChild);
printf("%c", root->data);
MidOrder(root->RChild);
}
}
void change(BiTree root)//交换根结点
{
if(root->LChild==NULL&&root->RChild==NULL)
{
return;
}
BiTree t;
t = root->LChild;
root->LChild = root->RChild;
root->RChild = t;
if(root->LChild)
{
change(root->LChild);
}
if(root->RChild)
{
change(root->RChild);
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
MidOrder(T);
printf("\n");
change(T);//交换结点后,再调用中序排序,左右孩子就交换了
MidOrder(T);
}