PAT1020. Tree Traversals
//典型后中省树,这种方法必须有 中序序列来确定根的位置,然后二分建树;
//因为用的vc,之前用序列位置建树通不过,用坐标建树通过了,怀疑vc的功能限制,有时间再来测试,眼下感觉还是坐标好啊,用地址巧了半个晚上了找不着八哥,还不A,哭晕
#include<cstdio>
//#include<cstring>
#include<queue>
#include<vector>
//#include<algorithm>
using namespace std;
const int maxn=31;
struct node
{
int data;
node *lchild,*rchild;
};
int pre[maxn],post[maxn],in[maxn];
int n;
queue<node*>q;
vector<int>level;
node *create(int postl,int postr,int inl,int inr)
{
if(postl>postr)return NULL;
node* root=new node;
root->data=post[postr];
root->lchild=root->rchild=NULL;
int k;
for(k=inl;k<=inr;k++)
if(in[k]==post[postr])break;
int numleft=k-inl;
root->lchild=create(postl,postl+numleft-1,inl,k-1);
root->rchild=create(postl+numleft,postr-1,k+1,inr);
return root;
}
void bfs(node *root)
{
if(root!=NULL)q.push(root);
while(!q.empty())
{
node *tmp=q.front();q.pop();
level.push_back(tmp->data);
if(tmp->lchild!=NULL)q.push(tmp->lchild);
if(tmp->rchild!=NULL)q.push(tmp->rchild);
}
}
int main()
{
freopen("input.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
int i;
for( i=0;i<n;i++)scanf("%d",&post[i]);
for( i=0;i<n;i++)scanf("%d",&in[i]);
node *root=create(0,n-1,0,n-1);
bfs(root);
for( i=0;i<level.size();i++)
{
if(i==level.size()-1)printf("%d\n",level[i]);
else printf("%d ",level[i]);
}
}
return 0;
}
PAT1020. Tree Traversals的更多相关文章
- pat1020. Tree Traversals (25)
1020. Tree Traversals (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...
- PAT1086:Tree Traversals Again
1086. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- Tree Traversals
Tree Traversals 原题链接 常见的二叉树遍历的题目,根据后序遍历和中序遍历求层次遍历. 通过后序遍历和中序遍历建立起一棵二叉树,然后层序遍历一下,主要难点在于树的建立,通过中序遍历和后序 ...
- HDU 1710 二叉树的遍历 Binary Tree Traversals
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- hdu1710(Binary Tree Traversals)(二叉树遍历)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDU1710Binary Tree Traversals
HDU1710Binary Tree Traversals 题目大意:给一个树的前序遍历和中序遍历,要求输出后序遍历. (半年前做这道题做了两天没看懂,今天学了二叉树,回来AC了^ ^) 首先介绍一下 ...
- HDU-1701 Binary Tree Traversals
http://acm.hdu.edu.cn/showproblem.php?pid=1710 已知先序和中序遍历,求后序遍历二叉树. 思路:先递归建树的过程,后后序遍历. Binary Tree Tr ...
- 03-树2. Tree Traversals Again (25)
03-树2. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue ...
- HDU 1710-Binary Tree Traversals(二进制重建)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
随机推荐
- Observer - IO (File Monitor)
1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 2. ...
- de.greenrobot.event.EventBusException: Subscriber class dji.midware.a.e already registered to event class
java.lang.RuntimeException: Unable to create application com.android.tools.fd.runtime.BootstrapAppli ...
- GL_GL系列 - 总账系统基础(概念)
2014-07-07 Created By BaoXinjian
- c++,opencv播放视频
#include <opencv2\opencv.hpp>#include <iostream> using namespace cv;using namespace std; ...
- VLC开发相关
1. libvlc在release下时,会出错.解决办法 project->linker->optimization->references-> NOREF 2. Iibvl ...
- ssh 连接ubuntu的虚拟机问题
我在winxp的虚拟机上装了一个ubuntu9.04的系统,winxp的ip为10.118.62.157,ubuntu的ip为192.168.116.1 两个ip互相ping都是正常的,但是,我在wi ...
- Bug 是改不完滴
- iphone的手势与触摸编程学习笔记
一.基本概念与理解:Cocoa Touch将触摸事件发送到正在处理的视图.触摸传达的信息包括: 触摸发生的位置 (当前位置.最近的历史位置) 触摸的阶段 (按下.移动.弹起) 轻击数量 (tapCou ...
- 解决dedev5.7更新出现include\userlogin.class.php on line 21的办法
第一种情况解决办法: 在dede\templets文件夹 找到 index_body.htm 文件 把这些注释掉. $(function() { $.get("index_tes ...
- MYSQL C API : mysql_real_query()
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, MYSQ ...