leetCode_字典树

来源:互联网 发布:ubuntu.com 编辑:程序博客网 时间:2024/06/06 18:08

好吧,又写了一遍字典树,已经写了n遍了。不过希望下次把线段树学会~

上代码:

class TrieNode {public:    int tag;    TrieNode *next[26];    // Initialize your data structure here.    TrieNode() {        int i;        for(i=0;i<26;i++) next[i]=NULL;        tag=0;    }};class Trie {public:    Trie() {        root = new TrieNode();    }    // Inserts a word into the trie.    void insert(string word) {        TrieNode *tempRoot=root;        int i;        for(i=0;i<word.length();i++)        {            if(tempRoot->next[word[i]-'a']==NULL)            {                TrieNode * newNode=new TrieNode();                tempRoot->next[word[i]-'a']=newNode;            }            tempRoot=tempRoot->next[word[i]-'a'];        }        tempRoot->tag=1;    }    // Returns if the word is in the trie.    bool search(string word) {        TrieNode *tempRoot=root;        int i;        for(i=0;i<word.length();i++)        {            if(tempRoot->next[word[i]-'a']!=NULL) tempRoot=tempRoot->next[word[i]-'a'];            else return false;        }        return tempRoot->tag==1;    }    // Returns if there is any word in the trie    // that starts with the given prefix.    bool startsWith(string word) {        TrieNode *tempRoot=root;        int i;        for(i=0;i<word.length();i++)        {            if(tempRoot->next[word[i]-'a']!=NULL) tempRoot=tempRoot->next[word[i]-'a'];            else return false;        }        return true;    }private:    TrieNode* root;};


0 0
原创粉丝点击