#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define maxn 100
struct node
{
char data;
struct node *lchild;
struct node *rchild;
};
typedef struct node NODE ;
int main()
{
void pre(NODE *root);
NODE * creat();
void preorder(NODE *root);
void change(NODE *root);
NODE *root;
int len;
char a[maxn];
scanf("%s",a);
len=strlen(a);
root=creat();
pre(root);
preorder(root);
printf("\n");
}
NODE * creat() //类似前序遍历创建二叉树
{
NODE *t;
t=(NODE *)malloc(sizeof(NODE));
if(n>=len)
{
t=NULL;
}
if(a[n]!='#')
{
t->data=a[n];
n++;
t->lchild=creat();
t->rchild=creat();
}
else
{
n++;
t=NULL;
}
return t;
}
void preorder(NODE *root) //前序遍历
{
if(root==NULL)
{
return ;
}
else
{
printf("%c",root->data);
preorder(root->lchild);
preorder(root->rchild);
}
}
void change(NODE *root) //交换左右结点
{
NODE *p;
p=root->rchild;
root->rchild=root->lchild;
root->lchild=p;
}
void pre(NODE *root)
{ //形式类似于前序遍历,调用change进行左右结点的交换
if(root!=NULL)
{
change(root);
pre(root->lchild);
pre(root->rchild);
}
}