其他分享
首页 > 其他分享> > 实现Trie(前缀树)

实现Trie(前缀树)

作者:互联网

 


 

变量简洁正确完整思路
Tires,isend和Tires*next[26]
class Trie {
public:
    Trie() {
        isEnd=false;
        memset(next,0,sizeof(next));
    }
    void insert(string word) {
        Trie*node=this;
        for(char c:word){
            if(!node->next[c-'a'])node->next[c-'a']=new Trie();
            node=node->next[c-'a'];
        }
        node->isEnd=true;
    }
    bool search(string word) {
        Trie*node=this;
        for(char c:word){
            node=node->next[c-'a'];
            if(!node)return false;
        }
        return node->isEnd;
    }
    bool startsWith(string prefix) {
        Trie*node=this;
        for(char c:prefix){
            node=node->next[c-'a'];
            if(!node)return false;
        }
        return true;
    }
private:
    bool isEnd;
    Trie*next[26];
};
踩过的坑
this指针不能赋值不能改变,所以Tries*node=this;

 

标签:node,return,前缀,Trie,isEnd,next,实现,word
来源: https://www.cnblogs.com/zhouzihong/p/15111627.html