数据结构上机测试4.1:二叉树的遍历与应用1
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。
输入
第一行输入二叉树的先序遍历序列;
第二行输入二叉树的中序遍历序列。
第二行输入二叉树的中序遍历序列。
输出
输出该二叉树的后序遍历序列。
示例输入
ABDCEF BDAECF
示例输出
DBEFCA
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char a[10001],b[10001];
struct node
{
char data;
struct node *l,*r;//左子树右子树
};
struct node *build (char *a,char *b,int n)//n是字符串长度
{
int i;
struct node *t;
char ch= a[0];
if (n <= 0)
return NULL;
else
{
t = (struct node *)malloc(sizeof (struct node));
t -> data = ch;
for (i = 0; i < n; i++)
{
if (b[i] == ch)
break;
}
t -> l = build ( a + 1, b, i);
t -> r = build (a + 1 + i,b + 1 + i,n - 1 - i);
return t;
}
}
void hou(struct node *t)
{
if(t!=NULL)
{
hou(t -> l);
hou(t -> r);
printf ("%c",t->data);
}
}
int main()
{
while(~scanf ("%s%s",a,b))
{
int lena;
lena =strlen (a);
struct node *tree;//**
tree = build (a,b,lena);
hou(tree);
printf ("\n");
}
return 0;
}