poj-2418

来源:互联网 发布:淘宝买二手ipad靠谱吗 编辑:程序博客网 时间:2024/05/18 01:13

二叉排序树,又名二叉查找树,挺简单建立的...

#include<iostream>#include<cstdio>#include<string.h>using namespace std;struct node{node * left;node * right;double cnt;char str[66];}*head;int ans;void insert(char *s){node * p1;node * p2;p1=head;int t;while(p1){p2=p1;t=strcmp(p1->str,s);if(t==0){p1->cnt++;return ;}else if(t<0){p1=p1->right;continue;}else if(t>0){p1=p1->left;continue;}}node * add=new node();add->cnt=1;add->left=add->right=NULL;strcpy(add->str,s);if(t>0)p2->left=add;else p2->right=add;}void print(node * p){if(p){print(p->left);printf("%s %.4lf\n",p->str,(p->cnt)*100*1.0/ans);print(p->right);}}int main(){//freopen("d:\\test.txt","r",stdin);char s[66];head=new node();head->cnt=1;head->left=head->right=NULL;ans=1;gets(s);strcpy(head->str,s);while(gets(s)!=NULL){ans++;insert(s);}print(head);return 0;}