PAT(A)-1127. ZigZagging on a Tree (30)(树的重建)
来源:互联网 发布:matlab编程实例 编辑:程序博客网 时间:2024/06/13 09:44
记录一个菜逼的成长。。
题目链接
题目大意:
给你一颗二叉树的中序和后序。
要你输出指定顺序的序列。
又是树的重建。。
输出的序列跟层序差不多,判断一下是否逆序存放就行了。
PS:这次春季,水的一匹。。这树的重建出了不知道多少遍。。
#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define pb push_backtypedef long long LL;const int INF = 0x3f3f3f3f;map<int,int>tree;vector<int>ans;const int maxn = 35;int post[maxn],in[maxn];void build(int t,int l1,int r1,int l2,int r2){ if(r1 < l1)return ; tree[t] = post[r2]; int p = 0; for( int i = l1; i <= r1; i++ ){if(in[i] != tree[t])p++;else break;} build(t<<1,l1,l1+p-1,l2,l2+p-1); build(t<<1|1,l1+p+1,r1,l2+p,r2-1);}void bfs(int t){ queue<int>q; vector<int>v; q.push(t); int cnt = 1,tmp = 0,flag = 0; while(!q.empty()){ int f = q.front();q.pop(); v.pb(tree[f]); if(cnt)cnt--; if(tree[f<<1])q.push(f<<1),tmp++; if(tree[f<<1|1])q.push(f<<1|1),tmp++; if(!cnt){ if(flag){ for( int i = 0; i < v.size(); i++ ){ ans.pb(v[i]); } flag = 0; } else { for( int i = v.size()-1; i >= 0; i-- ){ ans.pb(v[i]); } flag = 1; } v.clear(); cnt = tmp,tmp = 0; } }}int main(){ int n; while(~scanf("%d",&n)){ tree.clear(); for( int i = 0; i < n; i++ ){ scanf("%d",in+i); } for( int i = 0; i < n; i++ ){ scanf("%d",post+i); } build(1,0,n-1,0,n-1); bfs(1); for( int i = 0; i < ans.size(); i++ ){ printf("%d%c",ans[i],i!=ans.size()-1?' ':'\n'); } } return 0;}
0 0
- PAT(A)-1127. ZigZagging on a Tree (30)(树的重建)
- PAT 1127. ZigZagging on a Tree (30)
- PAT-1127. ZigZagging on a Tree (30)
- PAT--1127. ZigZagging on a Tree
- pat 1127. ZigZagging on a Tree
- PAT--ZigZagging on a Tree (30)
- PAT A1127. ZigZagging on a Tree (30)
- PAT 1127. ZigZagging on a Tree (30) 树的构建+特殊遍历序列
- pat 1127. ZigZagging on a Tree (30) 递归建树 + BFS
- PAT 1127. ZigZagging on a Tree (30)-甲级
- PAT (Advanced Level) 1127. ZigZagging on a Tree (30)
- 1127. ZigZagging on a Tree (30) PAT 甲级
- PAT甲级 1127. ZigZagging on a Tree (30)
- 【PAT】【Advanced Level】1127. ZigZagging on a Tree (30)
- PAT 甲级 1127. ZigZagging on a Tree (30)
- 1127. ZigZagging on a Tree (30)
- 1127.ZigZagging on a Tree (30)
- 1127. ZigZagging on a Tree (30)
- Android屏幕适配方案(下)
- Matrix..0.0
- 杭电ACM2000 自我感悟
- Pycharm配置
- 搭建samba服务器
- PAT(A)-1127. ZigZagging on a Tree (30)(树的重建)
- Ubuntu 安装 MySQL
- 基于BP神经网络的数字识别基础系统(二)
- spark设计思想
- 有关ajax 不走回调函数的问题解析
- SDUT 2144 图结构练习——最小生成树
- Java算法-排序-选择排序
- Set shadow in Android 5+
- python requests.get() 下载大文件