33,010
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
const int SIZE = 1002;
int preOrder[SIZE], inOrder[SIZE];
struct Node
{
int data;
Node *lson;
Node *rson;
};
void CreatTree(Node *&tree, int preNo, int inNo, int len);
void PrintPostOrder(Node *&tree);
int main()
{
int n, i;
Node *root;
while(cin >> n)
{
for(i=0;i<n;i++)
scanf("%d", &preOrder[i]);
for(i=0;i<n;i++)
scanf("%d", &inOrder[i]);
CreatTree(root, 0, 0, n);
PrintPostOrder(root);
printf("\n");
}
return 0;
}
void CreatTree(Node *&tree, int preNo, int inNo, int len)
{
int i;
if(len <= 0)
{
tree = NULL;
return;
}
tree = new Node;
tree->data = preOrder[preNo];
for(i=0;i<len;i++)
if(preOrder[preNo] == inOrder[inNo+i])
break;
CreatTree(tree->lson, preNo+1, inNo, i);
CreatTree(tree->rson, preNo+i+1, inNo+i+1, len-i-1);
}
void PrintPostOrder(Node *&tree)
{
if(NULL == tree)
return;
PrintPostOrder(tree->lson);
PrintPostOrder(tree->rson);
printf("%d", tree->data);
if(tree->data != preOrder[0])
printf(" ");
}