永发信息网

帮忙看一下这段程序的功能

答案:2  悬赏:0  手机版
解决时间 2021-07-29 19:30

帮忙看一下这段程序的功能(不必注释,只要大概说一下这段程序时干什么的)

#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0

typedef struct BTNode
{
int data;
struct BTNode *lchild,*rchild;
}BTNode;

BTNode *root;

void Insert(BTNode *s)
{
BTNode *p,*q;
if(root==NULL)
root=s;
else
{
p=root;
while(p!=NULL) //当p为空时,q就是可插入的地方
{
q=p; //当p向子数节点移动时,q记录p的双亲的位置
if(s->data<p->data)
p=p->lchild;
else
p=p->rchild;
}
if(s->data<q->data)
q->lchild=s;
else
q->rchild=s;
}
}

int Search(BTNode *s,int n)
{
BTNode *p;
p=s;
while(p!=NULL)
{
if(n==p->data) return 1;
if(n<p->data)
p=p->lchild;
else
p=p->rchild;
}
if(p==NULL) return 0;
}

void print(BTNode *t) //中序遍历二叉排序数树得到有序数列
{
if(t!=NULL)
{
print(t->lchild);
printf("%4d",t->data);
print(t->rchild);
}
}


void main()
{
BTNode *s;
int n;
int i,k;
root=NULL;
printf("请输入十个数:(建立十个结点的二叉排序树)\n");
for(i=0;i<10;i++)
{
scanf("%d",&k);
s=(BTNode *)malloc(sizeof(BTNode));
s->data=k;s->lchild=NULL;s->rchild=NULL;
Insert(s);
}
print(root);
printf("\n请出入关键值(待查找的数)n=?");
scanf("%d",&n);
if(Search(root,n)==1) printf("找到了!");
else printf("没有找到!");
printf("\n");


}

最佳答案
应该是利用二叉排序法在数列中查找到某个数(位置)
全部回答

建立二叉排序树,并输入一个数,这个数是否存在二叉排序树

就是二叉排序树的遍历

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
哪个皇帝登基最早?
朝闻夕死可矣是嘛意思?
计算机2级哪个好考?
天心区长沙湘璟木业哪位知道具体地址啊
氨氯地平右旋体的积极作用
现在沧州还能报名参军吗?
我的婚期订在阴历的10.27我现在家没有上班,
世界十大运动品牌都是啥?
法语关系代词C’est ce petit village
贵州石阡首届温泉旅游文化节都有哪些明星来助
7.09吨=------吨------千克 5米8
篮网明天打谁?
新邵县邵阳立马电动车怎么去啊,谁知道地址啊
哪个帅哥美女QQ爱墙点亮的给个种子?
保定哪有回收雷达手表
推荐资讯
为什么现在ddr2怎么这么贵,有的都比ddr3都贵
鲁豫有约》每一期节目都会放一些短片而这些短
兴山县宜昌兴山兴发物资交易中心地址在什么地
我是一九八八年四月农历六日占一下我才运和爱
为什么女人喜欢骗人?还特别喜欢骗男人?
我空间背景音乐的名字!求助高人指点!
魔兽世界里如何快速升级?
爱情古词名句,古风虐心凄美句
江夏区武汉新东方(枫叶国际校区)这个地址怎么
2010年12月四级 帮我估下分
我现在很想哭,谁有比较伤感的歌推荐几首给我
My family likes to have ( )together. A.a f
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?