3193上帝视角

3193   上帝视角

题目描述

给一棵二叉树的层序遍历序列和中序遍历序列,求这棵二叉树的先序遍历序列和后序遍历序列,并给出从右往左、从右上往左下、从上往下分别能看到的结点个数。注意,此处均把二叉树的每条边都设置为等长,角度为45度,因此结点可能在视觉上重叠。所谓从右往左看是指,对同一层的结点,右边的结点会挡住左边的结点,这样同一层结点就只能看到最右边的那一个;同样的,从右上往左下看是指,右上角的结点会挡住左下角45度的结点;从上往下看是指,对同一竖直位置来说,只能看到最上方的结点。

例如对下图来说,从右往左能看到3个结点,从右上往左下能看到3个结点,从上往下能看到5个结点。

输入格式:

每个输入文件中一组数据。

第一行一个正整数N1<=N<=30),代表二叉树的结点个数(结点编号为1~N)。

接下来两行,每行N个正整数,分别代表二叉树的层序遍历序列和中序遍历序列。数据保证序列中1~N的每个数出现且只出现一次。

输出格式:

先输出两行,每行N个正整数,分别代表二叉树的先序遍历序列和后序遍历序列。

接下来分三行输出从右往左、从右上往左下、从上往下分别能看到的结点个数。

每行末尾均不允许输出多余的空格。

输入样例 复制
7
1 2 3 4 5 6 7
4 2 5 1 6 3 7
输出样例 复制
1 2 4 5 3 6 7
4 5 2 6 7 3 1
3
3
5

说明

1
2
通过提交
时空限制1000ms/128mb
题目来源Shoutmon
评测方式在线评测
题目类型
难        度