http://ac.jobdu.com/problem.php?pid=1184
ABC##DE#G##F###
先序建樹:a ,左孩子b。
b,左孩子c,
c,左孩子空,右孩子空,退回b
b,右孩子d
.....
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Node
{
Node *left,*right;
char c;
};
int i;
char str[1000];
Node *build(char str[])
{
Node *T;
if (str[i++]=='#')
{
T=NULL;
}
else
{
T=(Node*)malloc(sizeof(Node));
T->c=str[i-1];
T->left=build(str);
T->right=build(str);
}
return T;
}
void inOrder(Node* T)
{
if (T->left)
{
inOrder(T->left);
}
printf("%c ",T->c);
if (T->right)
{
inOrder(T->right);
}
}
int main()
{
freopen("D:\\1.txt","r",stdin);
int j;
Node *T=NULL;
memset(str,0,sizeof(str));
while (scanf("%s",str)!=EOF)
{
i=0;
T=build(str);
inOrder(T);
memset(str,0,sizeof(str));
printf("\n");
}
return 0;
}