PAT_1020: Tree Traversals
来源:互联网 发布:清空文件夹内容 linux 编辑:程序博客网 时间:2024/05/20 17:23
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
备注:具体方法参见文章 http://www.cnblogs.com/fzhe/archive/2013/01/07/2849040.html
#include<iostream>#include<queue>using namespace std;typedef struct node{int id;struct node* left;struct node* right;}NODE;NODE* ConstructTree(int* post_order, int* in_order, int n_nodes){if(n_nodes==0)return NULL;NODE* root = new NODE;root->id = post_order[n_nodes-1];int rootIndex;for(rootIndex=0;rootIndex<n_nodes;rootIndex++){if(in_order[rootIndex] == root->id)break;}root->left = ConstructTree(post_order,in_order,rootIndex);root->right = ConstructTree(post_order+rootIndex,in_order+rootIndex+1,n_nodes-rootIndex-1);return root;}void LevelOrder(NODE* node){queue<NODE*> q;q.push(node);while(!q.empty()){NODE* n = q.front();q.pop();if(n->left)q.push(n->left);if(n->right)q.push(n->right);if(!q.empty())cout<<n->id<<" ";elsecout<<n->id;}}int main(){int n_nodes;cin>>n_nodes;int* post_order = new int[n_nodes];int* in_order = new int[n_nodes];for(int i=0;i<n_nodes;i++)cin>>post_order[i];for(int i=0;i<n_nodes;i++)cin>>in_order[i];NODE* root = ConstructTree(post_order,in_order,n_nodes);LevelOrder(root);return 0;}
- PAT_1020: Tree Traversals
- PAT_1020. Tree Traversals
- PAT_1020. Tree Traversals
- Tree Traversals
- Tree Traversals
- Tree Traversals
- HDOJ1710 Binary Tree Traversals
- traversals for Binary Tree
- HDOJ1710 Binary Tree Traversals
- hdoj1710Binary Tree Traversals
- 1020. Tree Traversals
- pat 1020 Tree Traversals
- 1020. Tree Traversals (25)
- 1020. Tree Traversals
- HDU1710:Binary Tree Traversals
- Hdu Binary Tree Traversals
- PAT 1020 Tree Traversals
- 【PAT】1020. Tree Traversals
- SEO必须把握的一种思维
- typeid 与 dynamic_cast(C++学习)
- HDU 1533 Going Home
- 4. 自动化你的编码标准
- pku 1364 King(差分约束)
- PAT_1020: Tree Traversals
- javascript 格式化工具
- 从今天开始好好学习英语
- moment, 一阶矩,二阶矩, 随机变量
- c++用参数返回堆上的空间
- 堆栈中的EIP EBP ESP(转)
- 算法练习01-动态规划-01背包问题
- 轻松玩转iOS UIToolbar
- C++指针作为函数的参数进行传递时注意的问题