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

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

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. struct node{
  5. node *left;
  6. node *right;
  7. int num;
  8. node()
  9. {
  10. left=NULL;
  11. right=NULL;
  12. num=;
  13. }
  14. };
  15. int t;
  16. int index=;
  17. int pre[];
  18. int in[];
  19. int ans[];
  20. void buildTree(node *root,int prel,int prer,int inl,int inr)
  21. {
  22. root->num=pre[prel];
  23. root->left=new node();
  24. root->right=new node();
  25. for(int i=inl;i<=inr;i++)
  26. {
  27. if(in[i]==pre[prel])
  28. {
  29. int zuol=i-inl;
  30. int youl=inr-i;
  31. if(zuol==&&youl==)
  32. {
  33. root->right=NULL;
  34. root->left=NULL;
  35. }
  36. else
  37. {
  38. if(i==inr)
  39. {
  40. buildTree(root->left,prel+,prel+zuol,inl,i-);
  41. root->right=NULL;
  42. }
  43. else
  44. if(i==inl)
  45. {
  46. buildTree(root->right,prel+zuol+,prer,i+,inr);
  47. root->left=NULL;
  48. }
  49. else
  50. {
  51.  
  52. buildTree(root->left,prel+,prel+zuol,inl,i-);
  53. buildTree(root->right,prel+zuol+,prer,i+,inr);
  54. }
  55. }
  56. }
  57. }
  58. }
  59. void print(node *root)
  60. {
  61. if(root->left!=NULL)
  62. print(root->left);
  63. if(root->right!=NULL)
  64. print(root->right);
  65. ans[index++]=root->num;
  66. }
  67. int main()
  68. {
  69. int temp;
  70.  
  71. while(scanf("%d",&t)!=EOF)
  72. {
  73. index=;
  74. memset(pre,,sizeof(int));
  75. memset(in,,sizeof(int));
  76. memset(ans,,sizeof(int));
  77. for(int i=;i<t;i++)
  78. scanf("%d",&pre[i]);
  79. for(int i=;i<t;i++)
  80. scanf("%d",&in[i]);
  81. node *root=new node();
  82. buildTree(root,,t-,,t-);
  83. print(root);
  84. for(int i=;i<t-;i++)
  85. printf("%d ",ans[i]);
  86. printf("%d\n",ans[t-]);
  87. }
  88. return ;
  89. }

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. Sightseeing Cows(最优比率环)

    Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8915   Accepted: 3000 ...

  2. Silverlight CheckBoxList

    项目要用到复选框,可是在Silverlight中不存在CheckBoxList.通过查阅资料以及依据自己的理解,写了简单演示样例: 1.XAML <UserControl x:Class=&qu ...

  3. asp.NET配置

    添加用户 1.选择创建用户   2 可以使用网站管理工具来管理应用程序的所有安全设置.可以设置用户和密码(身份验证),可以创建角色(用户组),还可以创建权限(用于控制对应用程序各个部分的访问的规则). ...

  4. Leetcode解题记录

    尽量抽空刷LeetCode,持续更新 刷题记录在github上面,https://github.com/Zering/LeetCode 2016-09-05 300. Longest Increasi ...

  5. 数据库基础(子查询练习、链接查询(join on 、union)及其练习)

    子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...

  6. FFTW程序Demo

    #include<stdio.h> #include<stdlib.h> #include <fftw3.h> #include<string.h> # ...

  7. Python学习之collections module-defaultdict()

    defaultdict()继承自dict系统内置类型defaultdict()定义以及作用:    返回一个和dictionay类似对象,和dict不同:      1. 可以制定key对应value ...

  8. 让Qt支持Win7的Aero和毛玻璃效果

    Qt5增加了许多特性,其中 Qt Windows Extras 模块就增加了对Win7 Aero 效果的支持. 官网的介绍如下: Qt Windows Extras provide classes a ...

  9. 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)

    原文 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还 ...

  10. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...