参考了博客上码量不到50行的代码,完成了这题的AC重构。感觉真的基础很重要,这题其实是很简单的一道树的前中后序的题目。但是我之前练习的时候,都是用的自己总结的骚套路,虽然理解起来很直观,但是用了动态数组(vector),时间复杂度比较大。这题问题规模n=5e4,时间控制600ms,虽然已经AC了,但是运行时间也花了400ms。

当时考试的时候又是用vector又是建树,所以最后一个case没过,丢了5分,很可惜。

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map> #define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 50000
#define MAX 0x06FFFFFF using namespace std; int in[LEN];
int pre[LEN];
int post[LEN];
int t=;
void setPost(int ps,int pe,int is,int ie); int main() {
freopen("d:/input/A1138.txt","r",stdin);
int n;
scanf("%d",&n);
int i;
FF(i,n) scanf("%d",&pre[i]);
FF(i,n) scanf("%d",&in[i]);
setPost(,n-,,n-);
O("%d\n",post[]);
return ;
} void setPost(int ps,int pe,int is,int ie){
if(ps>pe)return;//null
if(ps==pe){
post[t++]=pre[ps];
}else{
//find the elem is the pair of preOrder (ps)
int i=is;
while(in[i]!=pre[ps] && i<ie) i++;//redirect
//left
setPost(ps+, ps+i-is, is, i-);
//right
setPost(ps+i-is+, pe, i+, ie);
//root
post[t++]=pre[ps];
}
}

需要注意的点:

  根据问题的规模和题目的条件,估计应该用什么方法,越简单越好,题目不涉及的边界条件就不要去管了。

需要拓展的点:

  1.深化树的前中后序遍历。

  2.根据问题规模估算时间复杂度。

A1138 | 根据前序、中序生成后序的更多相关文章

  1. 遍历二叉树 - 基于递归的DFS(前序,中序,后序)

    上节中已经学会了如何构建一个二叉搜索数,这次来学习下树的打印-基于递归的DFS,那什么是DFS呢? 有个概念就行,而它又分为前序.中序.后序三种遍历方式,这个也是在面试中经常会被问到的,下面来具体学习 ...

  2. 【二叉树遍历模版】前序遍历&&中序遍历&&后序遍历&&层次遍历&&Root->Right->Left遍历

    [二叉树遍历模版]前序遍历     1.递归实现 test.cpp: 12345678910111213141516171819202122232425262728293031323334353637 ...

  3. 二叉树的前序和中序得到后序 hdu1710

    今天看学长发过来的资料上面提到了中科院机试会有一个二叉树的前序中序得到后序的题目.中科院的代码编写时间为一个小时,于是在七点整的时候我开始拍这个题目.这种类型完全没做过,只有纸质实现过,主体代码半个小 ...

  4. Java实现二叉树的前序、中序、后序遍历(非递归方法)

      在上一篇博客中,实现了Java中二叉树的三种遍历方式的递归实现,接下来,在此实现Java中非递归实现二叉树的前序.中序.后序遍历,在非递归实现中,借助了栈来帮助实现遍历.前序和中序比较类似,也简单 ...

  5. LeetCode二叉树的前序、中序、后序遍历(递归实现)

    本文用递归算法实现二叉树的前序.中序和后序遍历,提供Java版的基本模板,在模板上稍作修改,即可解决LeetCode144. Binary Tree Preorder Traversal(二叉树前序遍 ...

  6. c/c++ 用前序和中序,或者中序和后序,创建二叉树

    c/c++ 用前序和中序,或者中序和后序,创建二叉树 用前序和中序创建二叉树 //用没有结束标记的char*, clr为前序,lcr为中序来创建树 //前序的第一个字符一定是root节点,然后去中序字 ...

  7. Java实现二叉树的前序、中序、后序、层序遍历(非递归方法)

      在上一篇博客中,实现了Java中二叉树的四种遍历方式的递归实现,接下来,在此实现Java中非递归实现二叉树的前序.中序.后序.层序遍历,在非递归实现中,借助了栈来帮助实现遍历.前序和中序比较类似, ...

  8. 【2】【leetcode-105,106】 从前序与中序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树

    105. 从前序与中序遍历序列构造二叉树 (没思路,典型记住思路好做) 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [ ...

  9. PHP递归方法实现前序、中序、后序遍历二叉树

    二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree). class Node { public $value; pub ...

随机推荐

  1. CentOS 7 安装 mysql 5.7.27 for zabbix

    本文是因为需要安装zabbix系统,才贴出的此步骤,供自己查阅方便之用: 在安装使用zabbix前,需要先安装数据库,这里使用的是MySQL数据库进行部署,给出安装步骤,大家觉得有用也可收藏: 当然安 ...

  2. 基于Dapper的开源LINQ扩展,且支持分库分表自动生成实体二

    LnskyDB LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼. 文档地址: https://lining ...

  3. Entity Framework 学习系列(2) - MySql Database First 开发方式

    目录 写在前面 环境 下载MySQL连接工具 创建Databse First 1.创建控制台 2.创建数据库 3.安装 MySQL.Data 和MySQL.Data.Entity 3.在项目中添加数据 ...

  4. 用RD,GR,BL三个方法内代码生成一张图片(非原创,我只是完整了代码)

    我公开以下图片的源代码,,是ppm格式的,,自己找到能打开的工具.. (非原创,我加工的代码,可直接执行运行输出,缩略图能看到效果)  这是原博客 http://news.cnblogs.com/n/ ...

  5. MongoDB netcore

    mongodb.driver mongodb.driver.core url:  http://dl.mongodb.org/dl/win32/x86_64 ********************* ...

  6. AppTheme属性设置集合

    现在新建一个项目基本都会在 style.xml 设置基础的 AppTheme,但是系统的给提供的设置属性又比较多. 所以在此收集记录,以便之后查找方便. <style name="Ap ...

  7. selenium中元素操作之上传操作(六)

    上传操作分为两种情况: 1.input标签上传 如果是input可以直接输入路径的,那么直接调用send_keys输入路径,和前边的元素操作类似,在这里不再过多的赘述. 2.非input标签上传 非i ...

  8. 2019 思贝克java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.思贝克等公司offer,岗位是Java后端开发,因为发展原因最终选择去了思贝克,入职一年时间了,也成为了面试官 ...

  9. Java自学-异常处理 处理

    Java的异常处理办法 try catch throws 异常处理常见手段: try catch finally throws 步骤 1 : try catch 1.将可能抛出FileNotFound ...

  10. dubbo循序渐进 - nacos安装

    1.安装docker ce yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-r ...