http://poj.org/problem?id=2418
/*
二叉查找树:对于树中的每个节点X,它的左子树中的所有节点的值小于X的值,它的右子树中的所有节点的值大于X的值;
*/
题目大意:给出一些单词(包含大小写和空格),单词可以重复出现(单词最多10000种,最多1000000个)。要求按字典序输出单词并输出每个单词占的比例;
思路:单词的比较可以用strcmp,由于单词数较多,直接排序可能超时,若用字典树的话需要的空间较大。因此可以考虑将单词作为二叉查找树的关键字建树,然后按中序遍历输出。
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
struct node
{
char word[33];
int cnt;
node *left,*right;
node(char *n){
strcpy(word,n);
cnt=1;
left=NULL;
right=NULL;