#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct tree_node
{
int data;
struct tree_node *left_ptr;
struct tree_node *right_ptr;
};
void insert_node(struct tree_node **, int);
void pre_order(struct tree_node *);
void in_order(struct tree_node*);
void post_order(struct tree_node*);
int main()
{
int i, item;
struct tree_node* root_ptr = NULL;
srand(time(NULL));
for(i=0; i<10; i++)
{
item = rand()%15;
printf("%3d", item);
insert_node(&root_ptr, item);
}
puts("pre_order");
pre_order(root_ptr);
puts("in_order");
in_order(root_ptr);
puts("post_order");
post_order(root_ptr);
return EXIT_SUCCESS;
}
void insert_node(struct tree_node **tree_ptr, int value)
{
if (*tree_ptr == NULL)
{
*tree_ptr = malloc(sizeof(struct tree_node));
if (*tree_ptr != NULL)//malloc successfully
{
(*tree_ptr)->data = value;
(*tree_ptr)->left_ptr = NULL;
(*tree_ptr)->right_ptr = NULL;
}
else
{
printf("%d not inserted. No memory available\n", value);
}
}
else//the tree is not null
{
if (value < (*tree_ptr)->data)
{
insert_node(&((*tree_ptr)->left_ptr), value);
}
else if (value > (*tree_ptr)->data)
{
insert_node(&((*tree_ptr)->right_ptr), value);
}
else//the equal value is not inserted
{
puts("dup");
}
}
}
void pre_order(struct tree_node *ptr)
{
if (ptr != NULL)
{
printf("%3d", ptr->data);
pre_order(ptr->left_ptr);
pre_order(ptr->right_ptr);
}
}
void in_order(struct tree_node *ptr)
{
if (ptr != NULL)
{
in_order(ptr->left_ptr);
printf("%3d", ptr->data);
in_order(ptr->right_ptr);
}
}
void post_order(struct tree_node *ptr)
{
if (ptr != NULL)
{
post_order(ptr->left_ptr);
post_order(ptr->right_ptr);
printf("%3d", ptr->data);
}
}
- 浏览: 124862 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (341)
- Java (18)
- J2EE (0)
- Linux (81)
- VIM (22)
- windows (6)
- DB (11)
- Algorithm (57)
- Data structure (17)
- JS (5)
- C++ (65)
- HTML (6)
- Cloud (4)
- Eclipse (7)
- Python (42)
- Play (3)
- HTTP (1)
- awk (7)
- shell (20)
- Regular expression (5)
- NLP (33)
- ML (38)
- DM (43)
- Probabilistic (6)
- Crawler (14)
- matlab (1)
- perl (4)
- Design pattern (1)
- IO[File] (2)
- Deep Learning (1)
发表评论
-
正向插入排序
2011-09-28 21:51 310/* * ========================== ... -
归并排序
2011-10-07 23:22 246/* *========================= ... -
动态栈
2011-10-31 15:47 299/* * ========================== ... -
struct in_addr
2011-11-03 17:29 303struct in_addr addr_ip; struct ... -
UNIX创建临时文件
2011-11-04 13:26 289/* * ========================= ... -
UNIX目录扫描
2011-11-04 17:09 307/* * ========================== ... -
迷宫(多出口)
2011-12-10 12:09 299/* * ========================== ... -
8皇后(按列递归)
2011-12-10 17:55 285/* * ========================== ... -
epoll(精髓)
2011-12-23 09:47 246epoll - I/O event notification ... -
Linux Epoll介绍和程序实例
2011-12-23 09:47 2461. Epoll是何方神圣? Epoll可是当前在Linu ... -
Beli Makfile for linux
2012-04-25 13:12 322.SUFFIXES: .c .u CC= gcc # CFLA ... -
gsl eclipse
2012-04-25 14:27 4641 我的gsl安装路径:D:/GnuWin32 1 ... -
Linux下获取毫秒级时间差
2012-08-22 19:46 523Linux下获取毫秒级时间差 使用Linux的ge ... -
CPU Sin
2012-08-22 21:12 3211 #include <iostream> ... -
C++ 补全插件
2012-10-30 20:16 294config vim + clang complete wi ... -
c++ clang_complete
2012-12-17 17:01 306前一段时间发现了clang complete,发现效果 ... -
C++ File IO
2012-12-18 14:50 427在C++中如何实现文件的 ... -
ifstream eof()函数
2012-12-18 17:39 346用ifstream的eof(),竟然 ... -
C++ eof()函数陷阱
2012-12-20 16:49 359C++中用eof()检查是 ... -
C++ Map用法
2012-12-20 17:14 313/*************************** ...
相关推荐
【二叉排序树与文件操作】 功能要求: (1)从键盘输入一组学生记录建立二叉排序树; (2)二叉排序树存盘; (3)由文件恢复内存的二叉排序树; (4)中序遍历二叉排序树; (5)求二叉排序树深度; (6)求二叉...
二叉排序树的实现 二叉排序补充概念(也可以参考书上第九章第二节) 左子树的数据总是小于根和右子树的数据,这种就叫做二叉排序树,简单一点,二叉排序树左边的数据小于右边. 1)编程实现二叉排序树, 包括生成、...
二叉排序树C语言的简单实现,包含如下操作: 1.创建二叉排序树; 2.销毁二叉排序树; 3.清空二叉排序树; 4.插入指点结点至二叉排序树; 5.删除二叉排序树指点结点; 5.获取二叉排序树指定结点; 6.获取二叉排序树根...
代码里有二叉排序树插入操作递归算法,二叉排序树插入操作非递归算法,二叉排序树删除操作,创建二叉排序树,二叉排序树查找递归算法,二叉排序树查找非递归算法
1.构造一棵二叉排序树并对其进行中序遍历输出;2.在二叉排序树中查找某一关键字,若存在,显示查找成功;若不存在,将其插入到二叉排序树中,再中序遍历输出。
一、实验目的 (1)理解动态查找表的动态生成过程; (2)任意给出一组数(不少于10个),建立对应二叉排序树;...(2)实现二叉排序树的插入算法与查找算法,并建立二叉排序树; (3)进行数据查找和建树过程的比较。
用二叉链表作存储结构,编写程序实现二叉排序树上的基本操作:以回车('\n')为输入结束标志,输入数列L,生成二叉排序树T......
二叉排序树实现的学生管理 有创建插入 删除 查找等功能
二叉排序树插入
第一个程序:实现将两个二叉排序树合并为一个二叉排序树的算法; 第二个程序:N个人围成一圈,从第一个人开始计数,凡是数到1,2,4,8,也就是2的N次方的退出圈子。编写程序,把这些人退出的顺序输出,要求用链表。
采用llink-rlink方式存储二叉排序树,编写能够通过键盘输入建立二叉排序树,并在建立完立即在屏幕显示中序遍历结果的程序
ios编程:实现二叉排序树增删改查。 开发环境:windows下codeblocks。
1.2.1编程实现二叉排序树,包括生成、插入,删除; 1.2.2对二叉排序树进行先根、中根、和后根非递归遍历; 1.2.3每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 1.2.4分别用二叉排序树...
(1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T; (2)对二叉排序树T作中序遍历,输出结果; (3)计算二叉排序树T查找成功的平均查找长度,输出结果; 2.用顺序表(一维数组)作存储结构 (1)以回车...
二叉排序树。用二叉链表作存储结构。 要求: (1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T; (2)对二叉排序树T作中序遍历,输出结果; (3)计算二叉排序树T查找成功的平均查找长度,输出结果; (4)...
掌握二叉排序树的存储方法,实现二叉排序树的创建、查找、插入、删除、平均查找长度等基本操作。 三、实验内容及要求 1、构造二叉排序树的存储结构。 2、实现创建、查找、插入、删除、平均查找长度等操作。
设二叉排序树的二叉链表存储结构的类型定义如下: typedef struct node{ int data; //用整数表示一个结点的名 struct node *LChild,*RChild; //左右指针域 }BSTNode,*BSTree; 设计算法并编写程序求解以下几个问题...
二叉排序树的建立 搜索 插入 删除 遍历 等功能的实现 希望对你有所帮助