今天看学长发过来的资料上面提到了中科院机试会有一个二叉树的前序中序得到后序的题目。中科院的代码编写时间为一个小时,于是在七点整的时候我开始拍这个题目。这种类型完全没做过,只有纸质实现过,主体代码半个小时差不多刚好拍完。适应杭电的多数据格式改了5分钟。感觉这个时间有点长,仍须努力。

(g++可通过,因为是C++和C的混风)

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node{
node *left;
node *right;
int num;
node()
{
left=NULL;
right=NULL;
num=;
}
};
int t;
int index=;
int pre[];
int in[];
int ans[];
void buildTree(node *root,int prel,int prer,int inl,int inr)
{
root->num=pre[prel];
root->left=new node();
root->right=new node();
for(int i=inl;i<=inr;i++)
{
if(in[i]==pre[prel])
{
int zuol=i-inl;
int youl=inr-i;
if(zuol==&&youl==)
{
root->right=NULL;
root->left=NULL;
}
else
{
if(i==inr)
{
buildTree(root->left,prel+,prel+zuol,inl,i-);
root->right=NULL;
}
else
if(i==inl)
{
buildTree(root->right,prel+zuol+,prer,i+,inr);
root->left=NULL;
}
else
{ buildTree(root->left,prel+,prel+zuol,inl,i-);
buildTree(root->right,prel+zuol+,prer,i+,inr);
}
}
}
}
}
void print(node *root)
{
if(root->left!=NULL)
print(root->left);
if(root->right!=NULL)
print(root->right);
ans[index++]=root->num;
}
int main()
{
int temp; while(scanf("%d",&t)!=EOF)
{
index=;
memset(pre,,sizeof(int));
memset(in,,sizeof(int));
memset(ans,,sizeof(int));
for(int i=;i<t;i++)
scanf("%d",&pre[i]);
for(int i=;i<t;i++)
scanf("%d",&in[i]);
node *root=new node();
buildTree(root,,t-,,t-);
print(root);
for(int i=;i<t-;i++)
printf("%d ",ans[i]);
printf("%d\n",ans[t-]);
}
return ;
}

hdu 1710

后来看了下网上代码,发现有不需要构造树,直接用DFS的。高端洋气不清楚的样子。。

二叉树的前序和中序得到后序 hdu1710的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. HDU 1710 (二叉树的前序和中序,求后序)

    题目链接 题目大意: 输入二叉树的前序.中序遍历,请输出它的后序遍历 #include <stdio.h> #include <string.h> ; // 长度为n s1 前 ...

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

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

  9. 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)

    将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...

随机推荐

  1. 制作cdlinux u盘启动

    U盘一个 CDlinux的iso镜像文件 UltraISO grub4dos grubinst 方法/步骤1 1 [第一步]:用UltraISO把CDlinux的镜像刻录进U盘. 打开UltraISO ...

  2. 异常Crash之 NSGenericException,NSArray was mutated while being enumerated

    *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NS ...

  3. lua协程并发下载简单测试

    下载8个1m大小文件,测试五次分别耗时12.038s,10.316s,8.955s,11.275s,9.499s(lua代码实现如下) require "socket" --hos ...

  4. 将文件从数据库(MySQL)中进行读取

    package com.play; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Blob ...

  5. Objective-c @property和@Synthesize

    在Objective-c中,使用@property来标识属性(一般是实例变量).在实现文件中使用@synthesize标识所声明的变量,让系统自动生成设置方法和获取方法. 也就是说@property和 ...

  6. python成长之路9——socket和socketserver

    IPC:进程间通信 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具 ...

  7. Android dp和sp的用法汇总

    1 > dp 是跟像素密度无关的单位,也就是说在相同尺寸.但不同的分辨率的手机上,用dp标识的东西,显示的大小是一样的. sp是用于标识字体的,它不仅跟屏幕尺寸有关,还跟设置的系统字体大小有关. ...

  8. EntityFramework经典的left join语法

    /*  * 常常看到有人问linq语法怎样写left join的查询语句,但网上找到的都是简单的两表连接.參考意义有限.  * 今天最终项目里要用到复杂的多表连接,同一时候含有多个左连接,  * 恰好 ...

  9. Android 开机动画源码分析

    Android系统在启动SystemServer进程时,通过两个阶段来启动系统所有服务,在第一阶段启动本地服务,如SurfaceFlinger,SensorService等,在第二阶段则启动一系列的J ...

  10. activity变成Dialog的步骤

    1.在布局文件上最外层最好使用RelativeLayout来布局,如果使用LinearLayout来布局的话,显示对话框的话,感觉会有点问题: 要在预览中看到框框,并且是match_parent的,而 ...