转自 http://blog.csdn.net/topcoder1234/article/details/5887653。
注意:在这里并没有专门一个CHAR来存储字符,而是通过位置来确定是哪个字符,num = str[i] - 'a';
struct node { bool isWord; node *next[26]; node() { isWord = false; for(int i=0;i<26;i++) next[i] = NULL; } }; class Trie { public: node *root; Trie(){root = NULL;} void insert(string str) { if(!root) root = new node; node *location = root; for(int i=0;i<str.length();i++) { int num = str[i] - 'a'; if(location->next[num] == NULL) { location->next[num] = new node; } location = location->next[num]; } location->isWord = true; } bool search(string str) { node *location = root; for(int i=0;i<str.length();i++) { int num = str[i] - 'a'; if(location->next[num] == NULL) return false; location = location->next[num]; } return location->isWord; } };