Tree Reconstruction

You have just finished a compiler design homework question where you had to find the parse tree of an expression. Unfortunately you left your assignment in the library, but luckily your friend picked it up for you. Instead of e-mailing you the parse tree so that you can rewrite the solution, your friend decides to play a practical joke and sends you just the DFS and BFS trace. Rather than try to redo the entire question you decide to reconstruct the tree. Input The input file contains several test cases as described below. The first line of a input is the number n (1 ≤ n ≤ 1000) of nodes in the tree. The nodes in the tree are numbered 1, 2, . . . , n. The remaining numbers are the BFS traversal followed by the DFS traversal. Note that when a parent was expanded the children were traversed in ascending order. Output The output for each case should consist of n lines, one for each node. Each line should start with the node number followed by a colon followed by a list of children in ascending order. If there is more than one solution, any correct answer is acceptable. Sample Input 8 43512876 43172658 Sample Output 1: 7 2: 6 3: 1 2 4: 3 5 5: 8 6: 7: 8: