pta树种统计题 请能人给看看到底怎么回事

问题遇到的现象和发生背景

按顺序来看明明是不一样的字符串,他却匹配成功了 不知道为什么,能否有人给看看怎么回事?

用代码块功能插入代码,请勿粘贴截图
我的解答思路和尝试过的方法

我先创建好一个结点,然后用它的name去和根节点的name比较 然后根据情况进行插入,但是不知道为什么匹配总出错

我想要达到的结果
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 31
typedef struct TNode *tree;
struct TNode
{
    char name[max];
    int data;
    tree left;
    tree right;
};
int bs(char*s,char *str)
{
    return (strcmp(s,str));
}
tree buildTree(char *str)
{
    tree t=(tree)malloc(sizeof(struct TNode));
    t->left=NULL;
    t->right=NULL;strcpy(t->name,str);
    t->data=1;
    return t;
}
void Print(tree t,int n)
{
    if(t==NULL)
    {
        return;
    }
    Print(t->left,n);
    printf("%s %.4lf%\n",t->name,100*t->data/n);
    Print(t->right,n);
}
tree insertTree(tree t,tree t0)
{
    if(strcmp(t->name,t0->name)==0)
    {
        t->data++;
    }else
    {
        int p=bs(t->name,t0->name);
        if(p>0)
        {
            if(t->left!=NULL)
            {
                insertTree(t->left,t0);
            }else
            {
                t->left=t0;
            }
        }else
        {
            if(t->right!=NULL)
            {
                insertTree(t->right,t0);
            }else
            {
                t->right=t0;
            }
        }
    }
    return t;
}
int main()
{
    int n;scanf("%d",&n);getchar();
    char str[max];scanf("%s",str);getchar();
    tree s=(tree)malloc(sizeof(struct TNode));
    tree t=buildTree(str);
    while(n>1)
    {
        scanf("%s",s->name);getchar();
        s->left=NULL;s->right=NULL;s->data=1;
        insertTree(t,s);
        n--;
    }
    Print(t,n);
}