public void insertWord(string word) { int wordLength = word.Length; int currentIndex = 0; TrieNode currentNode = root; foreach (char c in word) { if (!currentNode.edge.ContainsKey(c)) { TrieNode newNode = new TrieNode(c); currentNode.edge.Add(c, newNode); currentNode = newNode; currentIndex++; if (currentIndex == wordLength) { currentNode.lastChar = true; } else { continue; } } else { currentIndex++; currentNode = currentNode.getNode(c); if (currentIndex == wordLength) { currentNode.lastChar = true; } } } }
private TrieNode findRoot(string prefix) { TrieNode currentNode = root; foreach (char c in prefix) { if (currentNode.edge.ContainsKey(c)) { currentNode = currentNode.getNode(c); } else { return(null); } } return(currentNode); }