时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:4894

解决:2062

题目描述:

输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。

输入:

输入第一行包括一个整数n(1<=n<=100)。

    接下来的一行包括n个整数。

输出:

可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。

    每种遍历结果输出一行。每行最后一个数据之后有一个空格。

样例输入:
  1. 5
  2. 1 6 5 9 8
样例输出:
  1. 1 6 5 9 8
  2. 1 5 6 8 9
  3. 5 8 9 6 1
提示:

输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。

来源:
2005年华中科技大学计算机保研机试真题

思路:

插入排序,前序中序后序遍历,建立二叉树的主要内容,不过缺了删除和查找。

主要每次循环开始时要重新初始化头结点。

代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 100
  5.  
  6. struct node {
  7. int k;
  8. struct node *l;
  9. struct node *r;
  10. };
  11.  
  12. struct node *create (struct node *h, int k)
  13. {
  14. if (h == NULL)
  15. {
  16. struct node *p = malloc(sizeof(struct node));
  17. p->k = k;
  18. p->l = NULL;
  19. p->r = NULL;
  20. return p;
  21. }
  22. if (k == h->k)
  23. return h;
  24. if (k < h->k)
  25. h->l = create(h->l, k);
  26. else
  27. h->r = create(h->r, k);
  28. return h;
  29. }
  30.  
  31. void preOrder(struct node *h)
  32. {
  33. if (h == NULL)
  34. return;
  35. printf("%d ", h->k);
  36. preOrder(h->l);
  37. preOrder(h->r);
  38. }
  39.  
  40. void infOrder(struct node *h)
  41. {
  42. if (h == NULL)
  43. return;
  44. infOrder(h->l);
  45. printf("%d ", h->k);
  46. infOrder(h->r);
  47. }
  48.  
  49. void postOrder(struct node *h)
  50. {
  51. if (h == NULL)
  52. return;
  53. postOrder(h->l);
  54. postOrder(h->r);
  55. printf("%d ", h->k);
  56. }
  57.  
  58. void delete(struct node *h)
  59. {
  60. if (h == NULL)
  61. return;
  62. delete(h->l);
  63. delete(h->r);
  64. free(h);
  65. }
  66.  
  67. int main()
  68. {
  69. int i, n, tmp;
  70. struct node *h = NULL;
  71.  
  72. while(scanf("%d", &n) != EOF)
  73. {
  74. h = NULL;
  75. for (i=0; i<n; i++)
  76. {
  77. scanf("%d", &tmp);
  78. //printf("i=%d\n", i);
  79. h = create(h, tmp);
  80. }
  81.  
  82. preOrder(h);
  83. printf("\n");
  84. infOrder(h);
  85. printf("\n");
  86. postOrder(h);
  87. printf("\n");
  88.  
  89. delete(h);
  90. }
  91. return 0;
  92. }
  93. /**************************************************************
  94. Problem: 1201
  95. User: liangrx06
  96. Language: C
  97. Result: Accepted
  98. Time:60 ms
  99. Memory:912 kb
  100. ****************************************************************/

九度OJ 1201:二叉排序树 (二叉树)的更多相关文章

  1. 九度OJ 1201 二叉排序树

    题目地址:http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n( ...

  2. 九度OJ 1385 重建二叉树

    题目地址:http://ac.jobdu.com/problem.php?pid=1385 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都 ...

  3. 九度OJ 1350:二叉树的深度 (二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1044 解决:614 题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长 ...

  4. 九度OJ 1184:二叉树遍历 (二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3515 解决:1400 题目描述: 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储). 例如如下的 ...

  5. 九度OJ 1078:二叉树遍历 (二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3748 解决:2263 题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树 ...

  6. 九度OJ 1113:二叉树 (完全二叉树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5079 解决:1499 题目描述: 如上所示,由正整数1,2,3--组成了一颗特殊二叉树.我们已知这个二叉树的最后一个结点是n.现在的问题是 ...

  7. 【九度OJ】题目1201:二叉排序树 解题报告

    [九度OJ]题目1201:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序 ...

  8. 【九度OJ】题目1467:二叉排序树 解题报告

    [九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...

  9. 【九度OJ】题目1113:二叉树 解题报告

    [九度OJ]题目1113:二叉树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1113 题目描述: 如上所示,由正整数1,2,3-- ...

随机推荐

  1. 本地启动tomcat的时候报内存溢出错误:java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space

    问题分析: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Load ...

  2. fabricjs 高级篇(自定义类型)

    原文:https://www.sitepoint.com/fabric-js-advanced/ <html> <head> <script src='./js/fabr ...

  3. 2017.6.29 java读取.properties配置文件的几种方法

    参考来自:http://www.cnblogs.com/s3189454231s/p/5626557.html 关于路径的解释:http://blog.csdn.net/bluishglc/artic ...

  4. D3学习之:D3.js中的12中地图投影方式

    特别感谢:1.[张天旭]的D3API汉化说明.已被引用到官方站点: 2.[馒头华华]提供的ourd3js.com上提供的学习系列教程,让我们这些新人起码有了一个方向. 不得不说,学习国外的新技术真的是 ...

  5. 算法导论(Introduction to Algorithms )— 第十二章 二叉搜索树— 12.1 什么是二叉搜索树

    搜索树数据结构支持很多动态集合操作,如search(查找).minmum(最小元素).maxmum(最大元素).predecessor(前驱).successor(后继).insert(插入).del ...

  6. Angular 学习笔记——表单验证

    <!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...

  7. 系统重装 U盘安装XP操作系统开机出现提示txtsetup.sif怎么办

    你的这个问题 是安装xp时把xp做成u盘出现的 原因是xp没有在根本上支持这种安装 到win7后才支持的 解决方法有以下几种 1,刻录成cd 2重新下载xp ghost版的不会出现这个问题 3证实Ul ...

  8. Location配置与ReWrite语法

    1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是 ...

  9. IIS7.5下的web.config 404应该如何配置

    IIS环境下web.config的配置的问题,在IIS7.5中添加配置404页面时遇到了一些问题,记录如下: 一开始在<customError>下的<error>节点配置404 ...

  10. Android 应用程序分析

    从这点上看,android应用程序实际上是由多个Activity按照一定的次序拼装起来的, 只不过拼装的过程中,后台传递了一些数据,使得各个Activity之间能比较好的衔接起来.     在 and ...