您的位置:首页 > 其它

POJ3630 - Phone List - 二叉树

2014-08-06 11:33 204 查看
#include<stdio.h>
#include<string.h>
char tmp[50];
int flag;
struct tree
{
char num[50];
tree *l,*r;
tree()
{
l=r=NULL;
memset(num,0,sizeof(num));
}
};
int min(int a,int b)
{
return a<b?a:b;
}
void set(char *s,tree *p)
{
int t=min(strlen(p->num),strlen(s));
if(strncmp(s,p->num,t)==0)
{
flag=1;
}
else if(strcmp(s,p->num)<0)
{
if(p->l==NULL)
{
p->l=new tree;
strcpy(p->l->num,s);
}
else
{
set(tmp,p->l);
}
}
else if(strcmp(s,p->num)>0)
{
if(p->r==NULL)
{
p->r=new tree;
strcpy(p->r->num,s);
}
else
{
set(tmp,p->r);
}
}
}
int main()
{
int n,t;
scanf("%d",&n);
while(n--)
{
tree *root=NULL;
flag=0;
scanf("%d",&t);
while(t--)
{
scanf("%s",tmp);
if(flag==0)
{
if(root==NULL)
{
root=new tree;
strcpy(root->num,tmp);
}
else
{
set(tmp,root);
}
}
}
if(flag==1)
{
puts("NO");
}
else
{
puts("YES");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: