按题意建立好二叉树,再按照先序遍历输出结果。

  1. #include<cstdio>
  2. #include<vector>
  3. #include<queue>
  4. #include<string.h>
  5. #include<algorithm>
  6. using namespace std;
  7.  
  8. struct node
  9. {
  10. int left, right, date;
  11.  
  12. }node[];
  13.  
  14. int a[], flag[];
  15.  
  16. void dfs(int father)
  17. {
  18. printf("%d", node[father].date);
  19. if (node[father].left != - || node[father].right != -) printf("(");
  20. if (node[father].left != - && node[father].right == -)
  21. {
  22. dfs(node[father].left);
  23. printf(")");
  24. }
  25. else if (node[father].left == - && node[father].right != -)
  26. {
  27. printf(",");
  28. dfs(node[father].right);
  29. printf(")");
  30. }
  31. else if (node[father].left != - && node[father].right != -)
  32. {
  33. dfs(node[father].left);
  34. printf(",");
  35. dfs(node[father].right);
  36. printf(")");
  37. }
  38.  
  39. }
  40.  
  41. int main()
  42. {
  43. int n, i;
  44. while (~scanf("%d", &n))
  45. {
  46. int numm = ;
  47. for (i = ; i <= ; i++)
  48. {
  49. node[i].date = -;
  50. node[i].left = -;
  51. node[i].right = -;
  52. }
  53. memset(flag, , sizeof(flag));
  54. for (i = ; i <= n; i++) scanf("%d", &a[i]);
  55. int father = , jishu = ;
  56. node[numm].date = a[]; numm++;
  57. for (i = ; i <= n; i++)
  58. {
  59. if (jishu == )
  60. {
  61. jishu++;
  62. if (a[i] != -)
  63. {
  64. node[father].left = numm;
  65. node[numm].date = a[i];
  66. numm++;
  67. }
  68. }
  69. else if (jishu == )
  70. {
  71. if (a[i] != -)
  72. {
  73. node[father].right = numm;
  74. node[numm].date = a[i];
  75. numm++;
  76. }
  77. jishu = ;
  78. father++;
  79. }
  80. }
  81. dfs();
  82. printf("\n");
  83. }
  84. return ;
  85. }

BUAA 2014级数据结构第五次上机 二叉树之数组转换广义表的更多相关文章

  1. 数据结构(C语言第2版)-----数组,广义表,树,图

    任何一个算法的设计取决于选定的数据结构,而算法的实现依赖于采用的存储结构. 之前线性表的数据元素都是非结构的原子类型,元素的值是不可再分的.下面学习的这两个线性表是很特殊的,其中数据元素本身也可能是一 ...

  2. 2016级算法第五次上机-A.Beihang Collegiate Pronunciation Contest 2017

    1065 Beihang Collegiate Pronunciation Contest 2017 思路 在字符串中不断做匹配 找到一个匹配就输出 时间复杂度\(O(n)\) ps.模式串是定长的, ...

  3. 2016级算法第五次上机-G.ModricWang的撒币游戏

    1062 ModricWang的撒币游戏 思路 此题为2017年ACM-ICPC亚洲区域赛乌鲁木齐赛区的A题,现场94个队中有38个队做出此题.在这里作为满分以外的题,是为了让大家看一下外面一些题的风 ...

  4. 2016级算法第五次上机-F.ModricWang的水系法术

    1066 ModricWang的水系法术 思路 比较典型的最大流问题,需要注意的是,题目已经暗示(明示)了这里的边是双向的,在建图的时候需要加上反向边的容量值. 解决最大流问题的基本思路就是不断在残量 ...

  5. 2016级算法第五次上机-E.AlvinZH的学霸养成记IV

    1039 AlvinZH的学霸养成记IV 思路 难题,最大二分图匹配. 难点在于如何转化问题,n对n,一个只能攻击一个,判断是否存在一种攻击方案我方不死团灭对方.可以想到把所有随从看作点,对于可攻击的 ...

  6. 2016级算法第五次上机-D.AlvinZH的学霸养成记III

    850 AlvinZH的学霸养成记III 思路 难题.概率DP. 第一种思考方式:直接DP dp[i]:从已经有i个学霸到所有人变成学霸的期望. 那么答案为dp[1],需要从后往前逆推.对于某一天,有 ...

  7. 2016级算法第五次上机-C.Bamboo和"Coco"

    1064 Bamboo和"Coco" 分析题意 每个亡灵至少一个花瓣,相邻的亡灵中思念值高的要获得的花瓣高(思念值相等是不需要花瓣一样多的).主要考贪心思路,为了使得花瓣总量最少, ...

  8. 2016级算法第五次上机-B.Bamboo&APTX4844魔发药水

    Bamboo&APTX4844魔发药水 题意 "于是,Bamboo耐着性子,看巫师从袖子里掏出 M 瓶时光泉水和 K 粒绿色能量.每瓶时光泉水重量为 c ,生发效果为 l:每粒绿色能 ...

  9. 题解:2018级算法第五次上机 C5-图2

    题目描述: 样例: 实现解释: 所有结点对最短路径的板子题 知识点: 寻找所有结点对最短路径,动态规划 坑点: 无坑,注意建边即可 使用的算法为floyd算法 按照程序顺序解释如下: 首先建图,以邻接 ...

随机推荐

  1. GMap学习笔记

    GMap学习笔记 1.GMap体系详解 What is the map control (GMapControl)? This is the control which renders the map ...

  2. PHP多维数组元素操作类

    我的框架里面一个多维数组元素操作类,主要用于读取数组中配置数据,可以通过字符串节点的方式:a.b.c 来获取和设置元素,以及多维数组的覆盖,有需求的可以参考下吧! <?php /** * Cre ...

  3. hdu1043

    #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#inclu ...

  4. angularjs的懒加载

    1.angularJS懒加载依赖模块 //设置 .config [ '$ocLazyLoadProvider' ($ocLazyLoadProvider) -> # We configure o ...

  5. JS 用角度换东南西北

    最近因为业务,正好需要用设备回传的角度值转成用户读得懂的文字形式 function toDirStr(num){ var num=parseInt(num) var N='北'; var E='东'; ...

  6. python学习-基础语法

    字符编码 1.python 2.x 默认是ASCII 编码 不支持中文,所以在代码有中文的时候 需要在文件最上一行加上#coding=utf-8.python 3.x则没有该问题. 变量命名规则 1. ...

  7. WPF和Winform的一些界面控件

    DevExpressTelerikMahApps.MetroModern UI for WPFModernWPFExtended WPF Toolkit™ Community EditionModer ...

  8. MVC-Area

    ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块都由MVC中的三层所 ...

  9. 问题记录1:The VMware Authorization Service is not running.

    问题 VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the pr ...

  10. ios开发之滑动长图截全屏应用

    最近做项目遇到要求截取图片长度超出手机屏幕,即可滑动的长图截屏,这里简单说一下解决思路,下面附带Demo下载地址. ,当我们要截全屏时,将滑动视图的frame以及偏移量记录下来,然后将滑动视图偏移量设 ...