1020. Tree Traversals (25)

来源:互联网 发布:php安装环境 编辑:程序博客网 时间:2024/05/16 05:15

1020. Tree Traversals (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (<=30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.

Sample Input:
72 3 1 5 7 6 41 2 3 4 5 6 7
Sample Output:

4 1 6 3 5 7 2


#include<iostream>#include<queue>using namespace std;int root,l,r,ll,rr;int node[1002][2];int a[10002], b[1002];int n;void dfs1(int &x, int l, int r, int ll, int rr){if (l > r) x = 0;for (int i = l; i <= r; i++){if (a[i] == b[rr]){x=i;dfs1(node[x][0], l, i - 1, ll, ll+i-l-1);dfs1(node[x][1], i + 1, r, ll +i-l, rr - 1);}}}void dfs(int&x, int l, int r, int ll, int rr)  {      if (l > r) x = 0;      for (int i = l; i <= r; i++)      {          if (a[i] == b[rr])          {              x = i;              dfs(node[x][0], l, i - 1, ll, ll + i - l - 1);              dfs(node[x][1], i + 1, r, ll + i - l, rr - 1);          }      }  }  int main(){cin >> n;for (int i = 1; i <= n; i++){cin >> b[i];}for (int i = 1; i <= n; i++) cin >> a[i];dfs1(root, 1, n, 1, n);queue<int> p;p.push(root); while (!p.empty())      {          int q = p.front();  p.pop();          if (root != q) printf(" ");          printf("%d", a[q]);          if (node[q][0]) p.push(node[q][0]);          if (node[q][1]) p.push(node[q][1]);      }  return 0;}


0 0