class TrieNode {
public:
// Initialize your data structure here.
TrieNode() {
val='0';
end_of_a_word=0;
for(int i=0;i<26;i++)
{
children[i]=NULL;
}
}
explicit TrieNode(char val):val(val)
{
for(int i=0;i<26;i++)
{
children[i]=NULL;
}
end_of_a_word=0;
}
char val;
int end_of_a_word;
TrieNode* children[26];
};
class Trie {
public:
Trie() {
root = new TrieNode();
}
// Inserts a word into the trie.
void insert(string s) {
TrieNode* p = root;
for(int i=0;i<s.length();i++)
{
int j=s.at(i)-'a';
if(j<0 || j>25)
return;
if(p->children[j]==NULL)
{
TrieNode *newnode = new TrieNode(s.at(i));
p->children[j]=newnode;
}
p=p->children[j];
}
p->end_of_a_word=true;
}
// Returns if the word is in the trie.
bool search(string key) {
TrieNode* p = root;
for(int i=0;i<key.length();i++)
{
int j=key.at(i)-'a';
if(j<0 || j>25 || p->children[j]==NULL)
return false;
p=p->children[j];
}
return p->end_of_a_word;
}
// Returns if there is any word in the trie
// that starts with the given prefix.
bool startsWith(string prefix) {
TrieNode* p = root;
for(int i=0;i<prefix.length();i++)
{
int j=prefix.at(i)-'a';
if(j<0 || j>25 || p->children[j]==NULL)
return false;
p=p->children[j];
}
return true;
}
private:
TrieNode* root;
};
// Your Trie object will be instantiated and called as such:
// Trie trie;
// trie.insert("somestring");
// trie.search("key");
[LeetCode]Implement Trie (Prefix Tree)
最新推荐文章于 2021-12-06 01:22:39 发布