uva10410(树还原BFS)
来源:互联网 发布:淘宝视频如何上传 编辑:程序博客网 时间:2024/06/08 02:30
思路:根据一棵树的先序和中序还原整棵树,记录每个节点的儿子节点,然后打印出来。
此类题目是比较典型的树还原的考点。不同与二叉树的是,这个可能是多叉树,不能像二叉树那样简单的进行儿子节点的判断。
// #pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <algorithm>#include <iomanip>#include <sstream>#include <string>#include <stack>#include <queue>#include <deque>#include <vector>#include <map>#include <set>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <limits.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> ii;const int inf = 1 << 30;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;inline int Readint(){char c = getchar();while(!isdigit(c)) c = getchar();int x = 0;while(isdigit(c)){x = x * 10 + c - '0';c = getchar();}return x;}int in[1010],pre[1010];vector<int> G[1010];struct line{int l,r;};int n;void solve(){queue<line> que;line tmp,x;tmp.l=0,tmp.r=n;que.push(tmp);int k=1;while(!que.empty()){tmp = que.front();que.pop();int u=pre[tmp.l];int top=tmp.l+1;if (tmp.r-tmp.l<=1) continue;G[u].push_back(pre[top]);k++;int i;for (i=top+1;i<tmp.r;++i){if (pre[i]==in[k]){G[u].push_back(pre[i]);k++;x.l=top;x.r=i;top=i;que.push(x);}}if (i==tmp.r){line x;x.l=top;x.r=tmp.r;que.push(x);}}}int main(){// freopen("in.txt","r",stdin);// freopen("out.txt","w",stdout);while(scanf("%d",&n)!=EOF){for (int i=1;i<=n;i++)G[i].clear();for (int i=0;i<n;i++)scanf("%d",&in[i]);for (int i=0;i<n;i++)scanf("%d",&pre[i]);solve();for (int i=1;i<=n;i++){printf("%d:",i);for (int j=0;j<G[i].size();++j){printf(" %d",G[i][j]);}printf("\n");}}return 0;}
0 0
- uva10410(树还原BFS)
- [UVA10410]Tree Reconstruction[BFS、DFS序建树]
- uva10410 - Tree Reconstruction BFS和DFS重建树
- 用bfs和dfs建树--uva10410 Tree reconstruction
- 习题6-11 树重建 UVa10410
- uva10410(dbl)
- uva10410 栈
- poj 3984 bfs+路径还原
- UVa10410 - Tree Reconstruction
- UVA10410 - Tree Reconstruction(队列)
- (不易)POJ-3414 BFS中的路径还原
- 还原二叉树
- 二叉树还原
- 还原二叉树
- 二叉树的还原
- pta 还原二叉树
- 还原二叉树
- 还原二叉树
- 01_基于应用拆分的技术架构
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
- JavaCC的基本使用
- 正则表达式详解,用好会使我们的编程效率事半功倍哦 !
- git学习入门
- uva10410(树还原BFS)
- MyBatis几种关联查询配置
- LeetCode5:Longest Palindromic Substring
- MYSQL的单表查询
- 大三了,果然还是得写点什么、做点什么来得到救赎
- 【转】Java基础:System.out.println与System.err.println的区别
- uva1292(基础树形dp)
- Action Context中值栈(value Stack )栈上下文(Stack context)的个人理解
- css中的ID选择器和CLASS选择器的区别