struct treenode { double cnt; char data[32]; treenode* left; treenode* right; treenode() { cnt=1.0; left=right=NULL; } }*root; int n; void build_binary_search_tree(char *ss) { treenode *ptr=root; while (true) { if(strcmp(ptr->data,ss) == 0) { ptr->cnt += 1; return ; } else if (strcmp(ptr->data,ss) > 0) { if( !ptr->left ) { ptr->left=new treenode(); strcpy(ptr->left->data,ss); return ; } else ptr=ptr->left; } else { if(!ptr->right) { ptr->right = new treenode(); strcpy(ptr->right->data,ss); return ; } else ptr=ptr->right; } } return ; } void LDR(treenode* ptr) { if( ptr != NULL) { LDR(ptr->left); printf("%s %.4lf\n",ptr->data,100*ptr->cnt/n); LDR(ptr->right); } }