1020. Tree Traversals (25)
来源:互联网 发布:php安装环境 编辑:程序博客网 时间:2024/05/16 05:15
1020. Tree Traversals (25)
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 7Sample 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;}
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 动态规划:从新手到专家
- Linux 上实现双向进程间通信管道
- Linux:进程池实现
- Runtime中Swizz_method方法替换
- 线程池实现。
- 1020. Tree Traversals (25)
- HDU 4784-Dinner Coming Soon-BFS
- 单链表的输入和输出(c语言编写)
- Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
- Java并发编程:volatile关键字解析
- HTML5 的message的使用
- 小回顾-比较完善的学生简易管理系统
- C++ this指针和构造函数(-)
- 第26周-window程序设计(基础篇)-第5章(图形基础)-贝塞尔曲线BEZIER.C