LeetCode[208] Implement Trie (Prefix Tree)

来源:互联网 发布:大数据主要来源于 编辑:程序博客网 时间:2024/05/16 00:28

Implement a trie with insertsearch, 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 cc) : c(cc), isLeaf(false) {memset(child, NULL, sizeof(child));}TrieNode() : isLeaf(false) {memset(child, NULL, sizeof(child));}char c;bool isLeaf;TrieNode* child[26];};class Trie {public:Trie() {root = new TrieNode();}// Inserts a word into the trie.void insert(string word) {TrieNode* node = root;string::iterator it = word.begin();while (it != word.end()) {if (node->child[*it - 'a'] == NULL)node->child[*it - 'a'] = new TrieNode(*it);node = node->child[*it - 'a'];++it;}node->isLeaf = true;}// Returns if the word is in the trie.bool search(string word) {TrieNode* node = root;string::iterator it = word.begin();while (it != word.end()) {if (node->child[*it - 'a'] == NULL)return false;node = node->child[*it - 'a'];++it;}if (node->isLeaf)return true;return false;}// Returns if there is any word in the trie// that starts with the given prefix.bool startsWith(string prefix) {TrieNode* node = root;string::iterator it = prefix.begin();while (it != prefix.end()) {if (node->child[*it - 'a'] == NULL)return false;node = node->child[*it - 'a'];++it;}return true;}private:TrieNode* root;};// Your Trie object will be instantiated and called as such:// Trie trie;// trie.insert("somestring");// trie.search("key");

0 0