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)
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.
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.