您的位置:首页 > 其它

LeetCode: Implement Trie (Prefix Tree)

2015-06-24 14:13 357 查看
Implement a trie with 
insert
search
,
and 
startsWith
 methods.

Note:

You may assume that all inputs are consist of lowercase letters 
a-z
.

class TrieNode {
public:
// Initialize your data structure here.
TrieNode(char input = '#'): isEnd(false)
{

}
bool isEnd;
unordered_map<char, TrieNode*> child;
};

class Trie {
public:
Trie() {
root = new TrieNode();
}

// Inserts a word into the trie.
void insert(string word) {
TrieNode *iter = root;
for(int i = 0; i < word.size(); i++)
{
if(iter->child.find(word[i]) != iter->child.end())
{
iter = iter->child[word[i]];
}
else
{
TrieNode *temp = new TrieNode(word[i]);
iter->child[word[i]] = temp;
iter = temp;
}
}
iter->isEnd = true;
}

// Returns if the word is in the trie.
bool search(string word) {
TrieNode *iter = root;
for(int i = 0; i < word.size(); i++)
{
if(iter->child.find(word[i]) != iter->child.end())
{
iter = iter->child[word[i]];
}
else
{
return false;
}
}
if(iter->isEnd == true)
return true;
else
return false;

}

// Returns if there is any word in the trie
// that starts with the given prefix.
bool startsWith(string prefix) {
TrieNode *iter = root;
for(int i = 0; i < prefix.size(); i++)
{
if(iter->child.find(prefix[i]) != iter->child.end())
{
iter = iter->child[prefix[i]];
}
else
{
return false;
}
}
return true;
}

private:
TrieNode* root;
};

// Your Trie object will be instantiated and called as such:
// Trie trie;
// trie.insert("somestring");
// trie.search("key");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: