题目解析:
题目很简单就是一个简单的数据结构,二叉树的递归建立,给出二叉树的先序遍历和中序遍历,让我们输出后续遍历,直接模拟一下就可以了,很水,1A
代码:
#include <bits/stdc++.h>
using namespace std;
struct Node
{
char c;
Node *left;
Node *right;
};
Node* buildNode(char c)
{
Node* node = (Node*)malloc(sizeof(Node));
node->c = c;
node->left = node->right = NULL;
return node;
}
Node* rebuildTree(char *pre,char *in,int len)
{
int i=0;
if(len==0)
return NULL;
Node *head = buildNode(pre[0]);
for(i=0; i<len; i++)
{
if(in[i]==pre[0])
break;
}
head->left = rebuildTree(pre+1,in,i);
head->right = rebuildTree(pre+i+1,in+i+1,len-i-1);
return head;
}
void postorder(Node *head)
{
if(head==NULL)
return;
postorder(head->left);
postorder(head->right);
cout<<head->c;
}
int main()
{
//freopen("in.txt","r",stdin);
char in[1000],pre[1000];
while(scanf("%s%s",pre,in)!=EOF)
{
postorder(rebuildTree(pre,in,strlen(pre)));
printf("\n");
}
return 0;
}