| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助大牛程序为什么总是RE?这个程序在1002能过 为什么在这就不行了呢?
#include<stdio.h>
int count[20001]={0};
struct node
{
char key[25];
int num;
struct node *left_child;
struct node *right_child;
};
typedef struct node BiTreeNode;
typedef struct node* BiTree;
int SearchBST(BiTree T,char key[25],BiTree f,BiTree *p)
{
if(!T){*p=f;return 0;}
else if(strcmp(key,T->key)==0) {*p=T;return 1;}
else if(strcmp(key,T->key)<0) return SearchBST(T->left_child,key,T,p);
else if(strcmp(key,T->key)>0) return SearchBST(T->right_child,key,T,p);
}
int InsertBST(BiTree *T,char key[25])
{
BiTree s=NULL,p=NULL;
if(!SearchBST(*T,key,NULL,&p))
{
s=(BiTree)malloc(sizeof(BiTreeNode));
strcpy(s->key,key);s->num=1;
s->left_child=NULL;
s->right_child=NULL;
if(!p) (*T)=s;
else if(strcmp(key,p->key)<0) p->left_child=s;
else if(strcmp(key,p->key)>0) p->right_child=s;
}
else
p->num++;
return 1;
}
int Free(BiTree T)
{
if(!T)
return 0;
if(T->left_child!=NULL)
Free(T->left_child);
if(T->right_child!=NULL)
Free(T->right_child);
free(T);
return 1;
}
int InOrderTre(BiTree T)
{
if(!T)
return 0;
if(T->left_child)
InOrderTre(T->left_child);
count[T->num]++;
if(T->right_child)
InOrderTre(T->right_child);
return 1;
}
main()
{
char key[25];
int i,m,n;
BiTree T=NULL;
while(scanf("%d %d",&n,&m)!=EOF&&(m!=0&&n!=0))
{
for(i=1;i<=n;i++)
{
scanf("%s",key);
InsertBST(&T,key);
}
InOrderTre(T);
for(i=1;i<=n;i++)
{
printf("%d\n",count[i]);
count[i]=0;
}
Free(T);
}
system("pause");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator