private bool TryGetNode(string key, out InternalTrieNode node) { node = root; foreach (var c in key) { if (!node.TryGetNode(c, out node)) { return(false); } } return(true); }
internal InternalTrieNode Add(char key) { InternalTrieNode childNode; if (!children.TryGetValue(key, out childNode)) { childNode = new InternalTrieNode(key, comparer) { Parent = this }; children.Add(key, childNode); } return(childNode); }
internal bool TryGetNode(char key, out InternalTrieNode node) { return(children.TryGetValue(key, out node)); }
private void RemoveNode(InternalTrieNode node) { node.Remove(); count--; }
private static void SetTerminalNode(InternalTrieNode node, TValue value) { node.IsTerminal = true; node.Value = value; }
/// <summary> /// Initializes a new instance of the <see cref="Trie{TValue}"/>. /// </summary> /// <param name="comparer">Comparer.</param> public Trie(IEqualityComparer <char> comparer) { root = new InternalTrieNode(char.MinValue, comparer); }