PAT 甲级 1020 Tree Traversals (二叉树遍历)
来源:互联网 发布:整体衣柜软件 编辑:程序博客网 时间:2024/06/06 12:37
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 <string.h>#include <stdlib.h>#include <algorithm>#include <math.h>#include <stdio.h>#include <queue>using namespace std;typedef struct Tree{ int data; Tree *lchild; Tree *rchild;}a[40];int post[40];int in[40];int n;int ans[40];void dfs(int l1,int r1,int l2,int r2,Tree* &root){ root=new Tree(); int i; for( i=l1;i<=r1;i++) if(in[i]==post[r2]) break; root->data=post[r2]; if(i==l1) root->lchild=NULL; else dfs(l1,i-1,l2,l2+i-l1-1,root->lchild); if(i==r1) root->rchild=NULL; else dfs(i+1,r1,r2-(r1-i),r2-1,root->rchild);}int cnt;void bfs(Tree *tree){ queue<Tree*> q; q.push(tree); while(!q.empty()) { Tree *root=q.front(); q.pop(); ans[cnt++]=root->data; if(root->lchild!=NULL) q.push(root->lchild); if(root->rchild!=NULL) q.push(root->rchild); }}int main(){ while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) scanf("%d",&post[i]); for(int i=1;i<=n;i++) scanf("%d",&in[i]); Tree *tree; dfs(1,n,1,n,tree); cnt=0; bfs(tree); for(int i=0;i<cnt;i++) { if(i==cnt-1) printf("%d\n",ans[i]); else printf("%d ",ans[i]); } } return 0;}
- PAT 甲级 1020 Tree Traversals (二叉树遍历)
- pat甲级_树的遍历(例题:1020. Tree Traversals 、1086. Tree Traversals、1099. Build A Binary Search Tree)
- PAT甲级真题及训练集(20)--1086. Tree Traversals Again (25)(前序,中序建二叉树,很重要!)
- PAT 甲级 1020. Tree Traversals
- [PAT-甲级]1020.Tree Traversals
- PAT 甲级 1020. Tree Traversals
- HDU---1710-Binary Tree Traversals (二叉树遍历)
- 二叉树的遍历(Tree Traversals)参考极客
- HDU 1710 Binary Tree Traversals (二叉树遍历)
- hdu1710 Binary Tree Traversals(二叉树遍历)
- HDU--1710--Binary Tree Traversals(二叉树遍历)
- PAT甲级练习题A1020. Tree Traversals (25)
- 【PAT甲级】1020. Tree Traversals (25)
- PAT甲级.1020. Tree Traversals (25)
- PAT甲级.1086. Tree Traversals Again (25)
- 1020. Tree Traversals (25) PAT甲级
- 1086. Tree Traversals Again (25) PAT甲级
- PAT甲级练习1020. Tree Traversals (25)
- 支付宝H5唤醒APP
- leetcode 112 Path Sum C++
- 2016年计算机视觉和图像处理相关的国际会议一览表
- 深拷贝与浅拷贝的区别
- Jboss 和 SpringMVC
- PAT 甲级 1020 Tree Traversals (二叉树遍历)
- 使用live555 VLC发送接收视频TS流
- Android@Kotlin(二) 界面构建与扩展方法
- ARM处理器的分类
- Linux环境下驱动编译问题解决
- H5输入框挡住解决
- Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
- MongoDB 数据类型
- ThinkPHP(4)——URL伪静态