九度OJ 1201 二叉排序树
题目地址:http://ac.jobdu.com/problem.php?pid=1201
- 题目描述:
-
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。
- 输入:
-
输入第一行包括一个整数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
- 提示:
-
输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
#include <stdio.h>
#include <stdlib.h> typedef struct btree{
int data;
struct btree * left;
struct btree * right;
}BTree; BTree * search (BTree * root, int data){
BTree * p = root;
BTree * pre = NULL; while (p != NULL){
pre = p;
if (p->data > data)
p = p->left;
else if (p->data < data)
p = p->right;
else
return NULL;
}
return pre;
} void insert (BTree ** root, int data){
BTree * p = NULL;
BTree * s = *root;
BTree * pre = NULL; p = (BTree *)malloc(sizeof(BTree));
p->data = data;
p->left = p->right = NULL;
if ((*root) == NULL){
*root = p;
return;
}
pre = search (*root, data);
if (pre != NULL){
if (pre->data > data)
pre->left = p;
if (pre->data < data)
pre->right = p;
} } BTree * build_btree (int tree[], int n){
int i;
BTree * root = NULL; for (i=1; i<=n; ++i){
insert (&root, tree[i]);
}
return root;
} void preorder (BTree * root){
BTree * p = root;
if (p != NULL){
printf ("%d ", p->data);
preorder (p->left);
preorder (p->right);
}
} void inorder (BTree * root){
BTree * p = root;
if (p != NULL){
inorder (p->left);
printf ("%d ", p->data);
inorder (p->right);
}
} void postorder (BTree * root){
BTree * p = root;
if (p != NULL){
postorder (p->left);
postorder (p->right);
printf ("%d ", p->data);
}
} void deletetree (BTree * root){
BTree * p = root;
if (p != NULL){
deletetree (p->left);
deletetree (p->right);
free (p);
}
} int main(void){
int n, i;
int tree[101];
BTree * root = NULL; while (scanf ("%d", &n) != EOF){
for (i=1; i<=n; ++i)
scanf ("%d", &tree[i]);
root = build_btree (tree, n);
preorder (root);
putchar ('\n');
inorder (root);
putchar ('\n');
postorder (root);
putchar ('\n');
deletetree(root);
} return 0;
}
参考资料:http://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9
九度OJ 1201 二叉排序树的更多相关文章
- 九度OJ 1201:二叉排序树 (二叉树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4894 解决:2062 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n(1< ...
- 【九度OJ】题目1201:二叉排序树 解题报告
[九度OJ]题目1201:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序 ...
- 【九度OJ】题目1467:二叉排序树 解题报告
[九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
随机推荐
- hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】
Warm up Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Su ...
- 百亿级别数据量,又需要秒级响应的案例,需要什么系统支持呢?下面介绍下大数据实时分析工具Yonghong Z-Suite
Yonghong Z-Suite 除了提供优秀的前端BI工具之外,Yonghong Z-Suite让用户可以选购分布式数据集市来支持实时大数据分析. 对于这种百亿级的大数据案例,Yonghong Z- ...
- JavaScript的递归之更多例子
更多例子 第二个递归的例子是求两个自然数的最大公约数(有没有回到令人怀念的中学时代).下面的程序用的是经典的辗转相除法. //greatest common divisor //假定a.b都是正整数 ...
- heX:用HTML5和Node.JS开发桌面应用
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- java中Map等对象转换为json
ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString( ...
- sort函数的例子
10.11编写程序,使用stable_sort和isShorter将传递给你的elimDups版本的vector排序.打印vector的内容. #include<algorithm> #i ...
- android 模拟器定在了任务栏出不来了
系统 任务栏上显示了正在运行的模拟器,但是点击它,始终看不到模拟器显示出来.用Alt + Tab 切换也不行 按照网上的说法 1.重新建一个模拟器,名字变一下 2.找到模拟器对应的配置文件,路径不管, ...
- oc中的类学习笔记1
1.oc中的类和构造方法 NSAutoreleasePool * pool =[[NSAutoreleasePool alloc] init]; NSAutoreleasePool是一个类,alloc ...
- debian安装mono环境
官网 http://pkg-mono.alioth.debian.org/ 在/etc/apt/sources.list 加上 deb http://debian.meebey.net/pkg-mon ...
- Java基础知识强化之IO流笔记48:IO流练习之 复制单级文件夹案例
1. 复制单级文件夹 数据源:e:\\demo 目的地:e:\\test 分析: A:封装目录 B:获取该目录下的所有文本的File数组 C:遍历该File数组,得到每一个File对象 ...