时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:4894

解决:2062

题目描述:

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

输入:

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

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

输出:

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

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

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

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

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

思路:

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

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

代码:

#include <stdio.h>
#include <stdlib.h> #define N 100 struct node {
int k;
struct node *l;
struct node *r;
}; struct node *create (struct node *h, int k)
{
if (h == NULL)
{
struct node *p = malloc(sizeof(struct node));
p->k = k;
p->l = NULL;
p->r = NULL;
return p;
}
if (k == h->k)
return h;
if (k < h->k)
h->l = create(h->l, k);
else
h->r = create(h->r, k);
return h;
} void preOrder(struct node *h)
{
if (h == NULL)
return;
printf("%d ", h->k);
preOrder(h->l);
preOrder(h->r);
} void infOrder(struct node *h)
{
if (h == NULL)
return;
infOrder(h->l);
printf("%d ", h->k);
infOrder(h->r);
} void postOrder(struct node *h)
{
if (h == NULL)
return;
postOrder(h->l);
postOrder(h->r);
printf("%d ", h->k);
} void delete(struct node *h)
{
if (h == NULL)
return;
delete(h->l);
delete(h->r);
free(h);
} int main()
{
int i, n, tmp;
struct node *h = NULL; while(scanf("%d", &n) != EOF)
{
h = NULL;
for (i=0; i<n; i++)
{
scanf("%d", &tmp);
//printf("i=%d\n", i);
h = create(h, tmp);
} preOrder(h);
printf("\n");
infOrder(h);
printf("\n");
postOrder(h);
printf("\n"); delete(h);
}
return 0;
}
/**************************************************************
Problem: 1201
User: liangrx06
Language: C
Result: Accepted
Time:60 ms
Memory:912 kb
****************************************************************/

九度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. 项目笔记:导出XML和导出全部XML功能

    前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...

  2. python 常用系统参数

    获取当前路径: os.path.abspath('.') 或os.getcwd() 获取上一级路径: print os.path.abspath('..') 获取上上一级路径:  os.path.ab ...

  3. 全栈技术经理——团队管理:每周问问你的团队这这些问题 V1.0

    全栈技术经理--团队管理:每周问问你的团队这这些问题 V1.0 1.本周取得了哪些进展? ​ 通过回答这个问题可以让员工庆祝甚至夸耀一些自己的成果,包括那些跟最高优先级不相干而被忽视的小事情.借此你也 ...

  4. java int转String全部方式的效率对照与深入解析

    在java中,大家肯定都会遇到int类型转String类型的情形,知其然知其所以然.总结加分析一下,int类型转String类型有下面几种方式: a+"" String.value ...

  5. Android之WebView的使用样例——WebSetting、WebViewClient、WebChromeClient

    点击查看原文 代码直接下载http://download.csdn.net/detail/metis100/8514837 第一步,xml Manifest中要设置网络权限,否则会出先 webpage ...

  6. HDU4911:Inversion

    Problem Description bobo has a sequence a1,a2,-,an. He is allowed to swap two adjacent numbers for n ...

  7. Laravel之HTTP相应

    一.基本相应示例 1.返回简单字符串 Route::get('/', function () { return 'Hello World'; }); 给定的字符串会被框架自动转化为 HTTP 响应 2 ...

  8. SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则

    上一节讲述了在没有MMU的CPU(如80251.MIPS M控制器系列.ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法.新设计的内存管理管理单元要实现虚拟内存管理还须要操作系统.代 ...

  9. react-native 项目实战 -- 新闻客户端(7) -- 新闻详情页

    http://c.3g.163.com/nc/article/BUH64L0J00031H2L/full.html 观察这个地址,BUH64L0J00031H2L 就是每条新闻数据里的postid.  ...

  10. jquery ui widget 源代码分析

    jquery ui 的全部组件都是基于一个简单,可重用的widget. 这个widget是jquery ui的核心部分,有用它能实现一致的API.创建有状态的插件,而无需关心插件的内部转换. $.wi ...