12390 - Construct tree by inorder and preorder   

Description

This problem is partial judge!

We will give you the "inorder" and "preorder" of a tree.

You need to construct a tree by the "inorder" and "preorder" we give you and print the "postorder".

There are three function you need to complete.

Node* buildTree(int *inorder, int *preorder, int *inorder_start, int inorder_end*);

function to construct the tree.

void showPostorder(Node *root)

function to print the postorder

void freeTree(Node *root)

function to free the tree

 

Notice that the the final testcase has small memory limit. If you don't free your tree you will get memory limit exceeded

 

 

 

 

 

 

(The tree for sample input 1)

(The tree for sample input 2)

Input

 

There are multiple testcases. The testcases will end with EOF.

Each testcase contains three lines.

First line only contains one integer n(1 <= n <= 100) which means the number of nodes in the tree.

Second line contains n integers which in the range of int. Standing for the "inorder".

Third line contains n integers which in the range of int. Standing for the "preorder".

It is guarnteed that no same number will appear in one tree.

 

Output

For each testcase output the "postorder" of the tree.

You have to output in this form:

testcase<id>: <postorder sequence>

Replace <id> and <postorder sequence> into the i-th testcase and the correct postorder sequence.

Each number in postorder sequence should be followed by a single blank(even the last number).

If you have further questions, please refer to sample output.

Sample Input  Download

Sample Output  Download

Partial Judge Code

12390.c

Partial Judge Header

12390.h

Tags




Discuss