#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student
{
char num[6]; //学号
int grade; //成绩
}ElemType;
typedef struct BSTNode
{
ElemType data;
struct BSTNode *lchild;
struct BSTNode *rchild;
} BSTNode,*Tree;
void menu()
{
printf("1.请输入一组学生记录建立二叉排序树\n");
printf ("2.二叉排序树存盘\n");
printf ("3.由文件恢复内存的二叉排序树\n");
printf ("4.中序遍历二叉排序树\n");
printf ("5.求二叉排序树深度\n");
printf ("6.求二叉排序树的所有节点数和叶子节点数\n");
printf ("7.向二叉排序树插入一条学生记录\n");
printf ("8.从二叉排序树中删除一条学生记录\n");
printf ("9.从二叉排序树中查询一条学生记录\n");
printf ("10.以广义表的形式输出二叉排序树\n");
}
Tree search(Tree T,int key)
{
if(T==NULL)
{
return NULL;
}
if(key<T->data.grade)
{
return search(T->lchild,key);
}
else if(key>T->data.grade)
{
return search(T->rchild,key);
}
else return T;
}
void insert(Tree *T,char *num,int key)
{
Tree p;
Tree q,t;
p=(BSTNode*)malloc(sizeof(BSTNode));
p->data.grade=key;
strcpy(p->data.num,num);
p->lchild=p->rchild=NULL;
if(*T==NULL)
{
*T=p;
return;
}
if(search(*T,key)!=NULL)
{
return;
}
q=*T;
t=NULL;
while(q)
{
t=q;
if(key<q->data.grade)
{
q=q->lchild;
}
else
{
q=q
C语言课程设计——二叉排序树
最新推荐文章于 2023-12-20 20:44:21 发布
本文详细探讨了C语言中二叉排序树的概念,包括其定义、特性以及如何进行插入、删除和查找操作。通过实例代码解析,帮助读者深入理解二叉排序树的数据结构和算法实现,并探讨其在实际问题中的应用。
摘要由CSDN通过智能技术生成