Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。
Sample
Input
abc,de,g,f,
Output
cbegdfa
cgefdba
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[100];
int x;
struct node
{
int data;
struct node *l, *r;
};
struct node *build()
{
struct node *tree;
char c;
c = a[x++];
if (c==',')
return NULL;
else
{
tree = (struct node *)malloc(sizeof(struct node));
tree->data = c;
tree->l = build();
tree->r = build();
}
return tree;
}
void mid(struct node *tree)
{
if (tree)
{
mid(tree->l);
printf("%c", tree->data);
mid(tree->r);
}
}
void last(struct node *tree)
{
if (tree)
{
last(tree->l);
last(tree->r);
printf("%c", tree->data);
}
}
int main()
{
struct node *tree;
while (~scanf("%s", a))
{
x = 0;
tree = (struct node *)malloc(sizeof(struct node));
tree = build();
mid(tree);
printf("\n");
last(tree);
printf("\n");
}
return 0;
}