Example #1
0
        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);
        }
Example #2
0
            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);
            }
Example #3
0
 internal bool TryGetNode(char key, out InternalTrieNode node)
 {
     return(children.TryGetValue(key, out node));
 }
Example #4
0
 private void RemoveNode(InternalTrieNode node)
 {
     node.Remove();
     count--;
 }
Example #5
0
 private static void SetTerminalNode(InternalTrieNode node, TValue value)
 {
     node.IsTerminal = true;
     node.Value      = value;
 }
Example #6
0
 /// <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);
 }