简单的trie实现

class Node{
private:
    string data;//注意这里的data存储的是节点的对应的value,而不是key
    map<string, Node> mp;
public:
    void insert(const string &str, string data) {
        Node *curr = this;
        stringstream ss;
        ss <<str;
        string word;
        while(ss >> word)
            curr = &(curr->mp[word]);

        curr->data = data;
    }

    string search(const string &str) {
        Node *curr = this;
        stringstream ss;
        ss <<str;
        string word;
        map<string,Node>::iterator it;
        while(ss >> word) {
            it =  curr->mp.find(word);
            if(it==curr->mp.end())
                return "";
            curr = &(it->second);
        }
        return curr->data;
    }
};

你可能感兴趣的:(简单的trie实现)