- 3
- 0
- 约2.47千字
- 约 10页
- 2021-02-23 发布于广东
- 举报
查找技术综合应用
1、源程序代码
#include stdio.h
#include stdlib.h
#define max 25 typedef struct bst 〃定义二叉树
{
int key;
//int date;
struct bst *lchild,*Tchild;〃左右孩子
////////////////////////////////二叉树的插入函数
int Insertbst(bst * p,int k)〃在二叉树中插入一个数
{
if(p=NULL)〃如果二叉树为空直接插入
p=(bst*)malloc(sizeof(bst));
p-key =k;
p-lchild =p-rchild =NULL;//左右孩子的初值为 NULL return 1;
}
else if(k==p-key ) 〃如果插入的是已经存在,就不在插入 return 0;
else if(kp-key )〃如果小于关键字,递归调用左子树
{
return Insertbst(p-lchild ,k);
}
else 〃如果大于关键字,递归调用右子树
return Insertbst(p-rchild ,k);
}
bst* Creatbst(int a[J,int n) 〃二叉排序树的创建
{
bst *bt=NULL; 〃初始化树为空
int i=0;
while(in)
{
Insertbst(bt,a[i]); //将关键字插入到树中
return bt; 〃返回建立的二叉树的更指针
IIIIIIIIIIIIIIIIIIIIIIIIIII
void InorderCbst^b)//屮序遍历二叉树的递归算法
{
if(b!=NULL)
{
Inorder(b-lchild);
printf(n%d\tH,b-key);
Inorder(b-rchild);
}
}
/////////////////////查找函数
int Searchbst(bst *bt,int k)〃二叉树的查找
{
if(bt==NULL) //如果为空返回0
return 0;
if(bt-key==k)
return k;〃如果有则返冋k值
if(kbt-key)
return Searchbst(bt-lchild,k);//递归调用左子树
else
return Searchbst(bt-rchild,k);//递归调用右子树
}
/////////////////删除函数
void Delatel(bst *p,bst*r) 〃当结点有左右子树的删除过程
{
bst*q;
if(r-rchild !=NULL)
Delatel(p,r-rchild );〃递归找到最右下结点
else
{
p-key =r-key ;//将r的关键字赋值给P
q=r;
r=r-lchild ;〃直接将其左子树的根结点放在被删除的位置上
free(q); 〃释放原r的空间
}
void Delate(bst *p)〃从二叉树中删除*P结点 bst *q;
if(p-rchild =NULL) //结点没有右子树的情况
{
q=p;
p=p-lchild ;//直接将其右子树的跟结点放在删除的结点位置 free(q);
}
else if(p-lchild =NULL)〃结点没有左子树的情况
{
q=p;
p=p-rchild ;//直接将其左子树的跟结点放在删除的结点位置 free(q);
}
else
Delatel(p,p-lchild );//结点既没有左子树也没有右子树
int Delatebst(bst *bt,int k) 〃删除函数
if(bt==NULL)
return 0;//空二叉树删除失败
else
{
if(kbt-key)
return Delatebst(bt-lchild ,k);
else if(kbt-key)
return Delatebst(bt-rchild ,k);
else
{
Delate(bt);
return 1;
}
}
}
lllllllllllllllllllllllllllllllllllllllll void main()
bst *p;
int a[max],i,n,m;
printfC输入要排序的个数n : n);
scanf(M%dH,n);
for(i=0;in;i++)
scanf(n%dn,a[i]);
p=Creatbst(a,n);
system(HclsH);
printfC输入排序后的序列:\rT);
Inorder(p);printf(n\nH);
printfC输入要插入的数:\nH); scanf(H%dH,m);
Insertbst(p,m);
Inorder(p)
您可能关注的文档
最近下载
- 空中交通管理基础全套教学课件.pptx VIP
- 大酒店承包合同(标准版).doc VIP
- 2024年天津市红桥区中考数学一模试卷(含解析).pdf VIP
- 《船舶电气与自动化(船舶电气)(大管轮)》_船舶电气(大管轮)第六章.pptx VIP
- 《船舶电气与自动化(船舶电气)(大管轮)》_船舶电气(大管轮)第五章.pptx VIP
- T_CCTAS 220-2025 零碳港口评价技术规范.pdf VIP
- 成都市青羊区2026届初三一诊(暨期末考试)物理试卷(含答案).pdf
- 《船舶电气与自动化(船舶电气)(大管轮)》_船舶电气(大管轮)第四章.pptx VIP
- 《船舶电气与自动化(船舶电气)(大管轮)》_船舶电气(大管轮)第三章.pptx VIP
- “部编本”高中语文教材插图运用研究.pdf
原创力文档

文档评论(0)