ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

leetcode 208. Implement Trie (Prefix Tree)

2019-09-24 09:41:44  阅读:227  来源: 互联网

标签:tmp word Trie 208 Tree trie TrieNode child


Implement a trie with insert, search, and startsWith methods.

Example:

Trie trie = new Trie();

trie.insert(“apple”); trie.search(“apple”); // returns true
trie.search(“app”); // returns false
trie.startsWith(“app”); // returns true
trie.insert(“app”); trie.search(“app”); // returns true

class TrieNode{
  public:
    TrieNode* child[26];    // the prefix tree can have  26 child
    bool isleaf;            // flag, isleaf
    TrieNode() : isleaf(false){
        for(auto &a : child){
            a = NULL;
        }
    }
    
};

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

/**
 * Your Trie object will be instantiated and called as such:
 * Trie* obj = new Trie();
 * obj->insert(word);
 * bool param_2 = obj->search(word);
 * bool param_3 = obj->startsWith(prefix);
 */

标签:tmp,word,Trie,208,Tree,trie,TrieNode,child
来源: https://blog.csdn.net/ljf_study/article/details/101265334

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有