private bool SearchWord(string wordToSearch) { TrieDataNode currentNode = _root; foreach (var ch in wordToSearch.ToCharArray()) { if (currentNode.GetChildWithChar(ch) == null) { return(false); } else { currentNode = currentNode.GetChildWithChar(ch); } } if (currentNode.IsTerminating == true) { return(true); } return(false); }
private string GetWord(TrieDataNode node, string prefix) { TrieDataNode currentNode = _root; string result = ""; while (currentNode != node) { for (int i = 0; i < prefix.Length; i++) { currentNode = currentNode.GetChildWithChar(prefix[i]); result += currentNode.ToString(); } } return(result); }
public void AddWord(string wordToAdd) { if (SearchWord(wordToAdd) == true) { return; } TrieDataNode currentNode = _root; foreach (var ch in wordToAdd.ToCharArray()) { TrieDataNode child = currentNode.GetChildWithChar(ch); if (child != null) { currentNode = child; } else { currentNode.AddChild(new TrieDataNode(ch)); currentNode = currentNode.GetChildWithChar(ch); } } currentNode.IsTerminating = true; }
public List <string> Complete(string baseChars) { TrieDataNode lastNode = _root; for (int i = 0; i < baseChars.Length; i++) { lastNode = lastNode.GetChildWithChar(baseChars[i]); if (lastNode == null) { return(new List <string>()); } } List <string> listOfwords = GetListOfWords(lastNode, baseChars); listOfwords.Sort(); return(listOfwords); }