二叉排序树能够存储具有什么特点的集合
1个回答
展开全部
includelt;stdio.h;
includelt;stdlib.h;
typedef struct node
{
int data;
node *left;
node *right;
}node;
node* CreateTree(node *root,int n)
{
if(root==NULL)
{
root=(node *)malloc(sizeof(node));
root-;data=n;
root-;left=NULL;
root-;right=NULL;
return root;
}
else if(n;root-;data)
{
root-;right=CreateTree(root-;right,n);
return root;
}
else if(nlt;root-;data)
{
root-;left=CreateTree(root-;left,n);
return root;
}
}
void Print(node *root)
{
if(root!=NULL)
{
Print(root-;left);
printf(;%d ;,root-;data);
Print(root-;right);
}
return;
}
bool search(node* root,int a)
{
node *p=root;
while(p!=NULL)
{
if(a==p-;data)
return true;
else if(a;p-;data)
p=p-;right;
else if(alt;p-;data)
p=p-;left;
}
return false;
}
void del(char *c)
{
int i,j=0,k=0;
bool b=true;
for(i=0;c[i]!=;;0;;++i)
{
b=true;
k=0;
while(klt;j)
{
if(c[k]==c[i])
{
b=false;
break;
}
k++;
}
if(!b)
continue;
c[j]=c[i];
j++;
}
c[j]=;;0;;
}
int main()
{
char c[51];
int n,i,a,m;
bool b=false,b1=false;
node* root=NULL;
while(1)
{
printf(;1.请输入长度不超过50的整数;n2.删除重复元素;n3.构建二叉排序树;n4.查找;n5.退出;n;);
scanf(;%d;,n);
getchar();
switch(n)
{
case 1:
{
scanf(;%s;,c);
printf(;输入的整数为%s;n;,c);
b=true;
break;
}
case 2:
{
if(!b)
printf(;没有数据;n;);
del(c);
printf(;删除后的整数为%s;n;,c);
break;
}
case 3:
{
if(!b)
printf(;没有数据;n;);
i=0;
while(c[i]!=;;0;)
{
a=c[i]-;0;;
root=CreateTree(root,a);
i++;
}
printf(;中序序列为:;n;);
Print(root);
printf(;;n;);
break;
}
case 4:
{
if(!b)
printf(;没有数据;n;);
scanf(;%d;,m);
if(search(root,m))
printf(;成功;n;);
else
printf(;失败;n;);
break;
}
case 5:
{
b1=true;
}
}
if(b1)
break;
}
return 0;
}
includelt;stdlib.h;
typedef struct node
{
int data;
node *left;
node *right;
}node;
node* CreateTree(node *root,int n)
{
if(root==NULL)
{
root=(node *)malloc(sizeof(node));
root-;data=n;
root-;left=NULL;
root-;right=NULL;
return root;
}
else if(n;root-;data)
{
root-;right=CreateTree(root-;right,n);
return root;
}
else if(nlt;root-;data)
{
root-;left=CreateTree(root-;left,n);
return root;
}
}
void Print(node *root)
{
if(root!=NULL)
{
Print(root-;left);
printf(;%d ;,root-;data);
Print(root-;right);
}
return;
}
bool search(node* root,int a)
{
node *p=root;
while(p!=NULL)
{
if(a==p-;data)
return true;
else if(a;p-;data)
p=p-;right;
else if(alt;p-;data)
p=p-;left;
}
return false;
}
void del(char *c)
{
int i,j=0,k=0;
bool b=true;
for(i=0;c[i]!=;;0;;++i)
{
b=true;
k=0;
while(klt;j)
{
if(c[k]==c[i])
{
b=false;
break;
}
k++;
}
if(!b)
continue;
c[j]=c[i];
j++;
}
c[j]=;;0;;
}
int main()
{
char c[51];
int n,i,a,m;
bool b=false,b1=false;
node* root=NULL;
while(1)
{
printf(;1.请输入长度不超过50的整数;n2.删除重复元素;n3.构建二叉排序树;n4.查找;n5.退出;n;);
scanf(;%d;,n);
getchar();
switch(n)
{
case 1:
{
scanf(;%s;,c);
printf(;输入的整数为%s;n;,c);
b=true;
break;
}
case 2:
{
if(!b)
printf(;没有数据;n;);
del(c);
printf(;删除后的整数为%s;n;,c);
break;
}
case 3:
{
if(!b)
printf(;没有数据;n;);
i=0;
while(c[i]!=;;0;)
{
a=c[i]-;0;;
root=CreateTree(root,a);
i++;
}
printf(;中序序列为:;n;);
Print(root);
printf(;;n;);
break;
}
case 4:
{
if(!b)
printf(;没有数据;n;);
scanf(;%d;,m);
if(search(root,m))
printf(;成功;n;);
else
printf(;失败;n;);
break;
}
case 5:
{
b1=true;
}
}
if(b1)
break;
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询