实验3实现二叉排序树
一·实验目的:1.掌握二叉排序树的定义以及基本操作的实现算法。2.编写实验报告3。 熟练掌握顺序查找、折半查找及二叉排序树、平衡二叉树上的查找、插入和删除的方法。
问题描述:实现二叉排序树的查找、插入和删除操作。
步骤:
1.定义二叉链表结构存储二叉排序树。
2.实现二叉排序树的查找、插入和删除操作算法。
3.设计测试用二叉排序树并使用插入算法创建对应的内存二叉树,能够测试查找、插入和删除算法的边界。
4.完成实验的实验报告,报告的格式采用《数据结构题集》的模板格式。两周之后提交。 设备和环境:PC计算机、Windows操作系统、C/C++开发环境
结论:能够理解和掌握二叉排序树的基本算法。
二〃需求分析
查找是数据处理的重要操作。请设计并实现基于二叉排序树的商品信息查询算法。完成信息的查询、插入、删除、查询频度的统计等功能。
三、概要设计
建立二叉排序树,并实现基本操作,验证其准确性。
四、详细设计
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int key;
struct node*lch,*rch;
}bitnode;
bitnode*creat_bt();//二叉顺序树的建立
bitnode*search(bitnode*root,int data); //查找是data存在与否,若不存在返回待查找data的父结点指针
void searchx(bitnode*root,int data);//判断所查找的元素data是否存在,并给出相应的提示
void display(bitnode*t);//中序遍历二叉树,以验证二叉树的正确
性
bitnode*deletex(bitnode*t,int data);//在二叉树中删除key为data的结点
bitnode*add(bitnode*t,int k);//在二叉树中添加key为data的结点
int n=1;//用于记数的全局变量
void main()
{
bitnode*t;
int a,key;
do
{
printf("*********************主菜单*********************"); printf("\n 1.建立二叉树");
printf("\n 2.删除二叉树中指定元素为key的结点");
printf("\n 3.向二叉树中添加指定元素为key的结点");
printf("\n 4.在二叉树中查找指定元素为key的结点");
printf("\n 5.中序遍历二叉树,以检验正确性");
printf("\n 6.结束程序运行");
printf("\n请输入您的选择(1,2,3,4,5,6):");
scanf("%d",&a);
switch(a)
{ case 1:
{ t=creat_bt();break;}
case 2:
{ printf("请输入所要删除的结点的key值:");
scanf("%d",&key);
t=deletex(t,key);break;
}
case 3:
{ printf("请输入要添加的元素的key值作为第%d个结点:",n++);scanf("%d",&key);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26292-1.html
联合国是什么
可笑
再25年还3000点儿