`

二叉排序树

 
阅读更多

#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);
}
}

分享到:
评论

相关推荐

    二叉排序树与文件操作

    【二叉排序树与文件操作】 功能要求: (1)从键盘输入一组学生记录建立二叉排序树; (2)二叉排序树存盘; (3)由文件恢复内存的二叉排序树; (4)中序遍历二叉排序树; (5)求二叉排序树深度; (6)求二叉...

    数据结构课程设计二叉排序树的实现

    二叉排序树的实现 二叉排序补充概念(也可以参考书上第九章第二节) 左子树的数据总是小于根和右子树的数据,这种就叫做二叉排序树,简单一点,二叉排序树左边的数据小于右边. 1)编程实现二叉排序树, 包括生成、...

    二叉排序树C实现代码

    二叉排序树C语言的简单实现,包含如下操作: 1.创建二叉排序树; 2.销毁二叉排序树; 3.清空二叉排序树; 4.插入指点结点至二叉排序树; 5.删除二叉排序树指点结点; 5.获取二叉排序树指定结点; 6.获取二叉排序树根...

    二叉排序树的建立、插入、查找和删除

    代码里有二叉排序树插入操作递归算法,二叉排序树插入操作非递归算法,二叉排序树删除操作,创建二叉排序树,二叉排序树查找递归算法,二叉排序树查找非递归算法

    二叉排序树_17281183_刘梦婷_leavingtbk_二叉排序树_

    1.构造一棵二叉排序树并对其进行中序遍历输出;2.在二叉排序树中查找某一关键字,若存在,显示查找成功;若不存在,将其插入到二叉排序树中,再中序遍历输出。

    数据结构___二叉排序树

    一、实验目的 (1)理解动态查找表的动态生成过程; (2)任意给出一组数(不少于10个),建立对应二叉排序树;...(2)实现二叉排序树的插入算法与查找算法,并建立二叉排序树; (3)进行数据查找和建树过程的比较。

    数据结构课程设计 二叉排序树与平衡二叉排序树

    用二叉链表作存储结构,编写程序实现二叉排序树上的基本操作:以回车('\n')为输入结束标志,输入数列L,生成二叉排序树T......

    二叉排序树 学生管理系统

    二叉排序树实现的学生管理 有创建插入 删除 查找等功能

    二叉排序树插入

    二叉排序树插入

    二叉排序树与退圈问题

    第一个程序:实现将两个二叉排序树合并为一个二叉排序树的算法; 第二个程序:N个人围成一圈,从第一个人开始计数,凡是数到1,2,4,8,也就是2的N次方的退出圈子。编写程序,把这些人退出的顺序输出,要求用链表。

    二叉排序树-中序遍历

    采用llink-rlink方式存储二叉排序树,编写能够通过键盘输入建立二叉排序树,并在建立完立即在屏幕显示中序遍历结果的程序

    二叉排序树增删改查

    ios编程:实现二叉排序树增删改查。 开发环境:windows下codeblocks。

    二叉排序树最新版本.pdf

    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、实现创建、查找、插入、删除、平均查找长度等操作。

    C/C++:二叉排序树.rar(含完整注释)

    设二叉排序树的二叉链表存储结构的类型定义如下: typedef struct node{ int data; //用整数表示一个结点的名 struct node *LChild,*RChild; //左右指针域 }BSTNode,*BSTree; 设计算法并编写程序求解以下几个问题...

    二叉排序树C++实现

    二叉排序树的建立 搜索 插入 删除 遍历 等功能的实现 希望对你有所帮助

Global site tag (gtag.js) - Google Analytics