//典型后中省树,这种方法必须有 中序序列来确定根的位置,然后二分建树;

//因为用的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的更多相关文章

  1. pat1020. Tree Traversals (25)

    1020. Tree Traversals (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...

  2. PAT1086:Tree Traversals Again

    1086. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  3. Tree Traversals

    Tree Traversals 原题链接 常见的二叉树遍历的题目,根据后序遍历和中序遍历求层次遍历. 通过后序遍历和中序遍历建立起一棵二叉树,然后层序遍历一下,主要难点在于树的建立,通过中序遍历和后序 ...

  4. HDU 1710 二叉树的遍历 Binary Tree Traversals

    Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  5. hdu1710(Binary Tree Traversals)(二叉树遍历)

    Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  6. HDU1710Binary Tree Traversals

    HDU1710Binary Tree Traversals 题目大意:给一个树的前序遍历和中序遍历,要求输出后序遍历. (半年前做这道题做了两天没看懂,今天学了二叉树,回来AC了^ ^) 首先介绍一下 ...

  7. HDU-1701 Binary Tree Traversals

    http://acm.hdu.edu.cn/showproblem.php?pid=1710 已知先序和中序遍历,求后序遍历二叉树. 思路:先递归建树的过程,后后序遍历. Binary Tree Tr ...

  8. 03-树2. Tree Traversals Again (25)

    03-树2. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue ...

  9. HDU 1710-Binary Tree Traversals(二进制重建)

    Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

随机推荐

  1. shell中大小写转换

    有两种方式: 1.用tr 例如:UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]')   (把VARIABLE的小写转换成大写) LOWERCASE=$(e ...

  2. Form_Form标准控件Folder开发解析(案列)

    2014-01-09 Created By BaoXinjian 1. 打开APPSTAND.fmb, 并加载程序库APPFLDR.pll. 2. 基于APPSTAND.fmb生成Folder开发所需 ...

  3. c++学习-特殊类成员

    静态变量: #include<iostream> #include<string> #include <typeinfo> using namespace std; ...

  4. 一步步优化JVM五:优化延迟或者响应时间(1)

    http://blog.csdn.net/zhoutao198712/article/details/7791969      本节的目标是做一些优化以满足对应用对延迟的需求.这次需要几个步骤,包括完 ...

  5. ylbtech-LanguageSamples-Yield

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Yield 1.A,示例(Sample) 返回顶部 “Yield”示例 本示例演示如何创 ...

  6. ylbtech-LanguageSamples-Threading(线程处理)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Threading(线程处理) 1.A,示例(Sample) 返回顶部 “线程处理”示例 ...

  7. MySQL利用Navicat导出数据字典

    这里算是一个小技巧 利用mysql的information_schema中的COLUMNS表 和navicat中的导出功能实现快速导出数据字典 CREATE TEMPORARYTABLE `COLUM ...

  8. SIT和UAT的区别

    SIT和UAT有什么区别?谢谢! 系统内部集成测试(System   Integration   Testing) SIT 用户验收测试(User   Acceptance Testing) UAT ...

  9. Echarts-地图扩展-标准geoJson格式扩展地图-例子

    本人菜鸟一枚,最近搞echarts地图.看到官方给的“标准geoJson格式扩展地图-全国主要城市”的例子,瞬间就蒙逼了.不怪人官网的例子不好,实在是我看不懂它是怎么弄得.最后折腾了一晚上,最后终于弄 ...

  10. ORA-30036

    http://blog.sina.com.cn/s/blog_676255e101018d5s.html