public bool searchTrie(string word, int sp) { TrieNodeCC node = root; for (int i = sp; i < word.Length; i++) { char curr = word[i]; if (!node.children.ContainsKey(curr)) { return(false); } node = node.children[curr]; if (node.word != null) { if (i == word.Length - 1 && node.len != word.Length) { return(true); } else { if (searchTrie(word, i + 1)) { return(true); } } } } return(false); }
public void buildTrie(string[] words) { foreach (string word in words) { TrieNodeCC node = root; foreach (char _chr in word) { if (!node.children.ContainsKey(_chr)) { node.children.Add(_chr, new TrieNodeCC()); } node = node.children[_chr]; } node.word = word; node.len = word.Length; } }