Esempio n. 1
0
 private void AddNode(string key, T data, Node <T> node)
 {
     if (string.IsNullOrEmpty(key))
     {
         if (!node.IsWord)
         {
             node.Data   = data;
             node.IsWord = true;
         }
     }
     else
     {
         var symbol  = key[0];
         var subnode = node.TryFind(symbol);
         if (subnode != null)
         {
             AddNode(key.Substring(1), data, subnode);
         }
         else
         {
             var newNode = new Node <T>(key[0], data, node.Prefix + key[0]);
             node.SubNodes.Add(key[0], newNode);
             AddNode(key.Substring(1), data, newNode);
         }
     }
 }
Esempio n. 2
0
        private bool SearchNode(string key, Node <T> node, out T value)
        {
            value = default(T);
            var result = false;

            if (string.IsNullOrEmpty(key))
            {
                if (node.IsWord)
                {
                    value  = node.Data;
                    result = true;
                    Console.WriteLine(node);
                }
                else
                {
                    Console.WriteLine("Not found!");
                }
            }
            else
            {
                var subnode = node.TryFind(key[0]);
                if (subnode != null)
                {
                    result = SearchNode(key.Substring(1), subnode, out value);
                }
            }

            return(result);
        }
Esempio n. 3
0
 private void RemoveNode(string key, Node <T> node)
 {
     if (string.IsNullOrEmpty(key))
     {
         if (node.IsWord)
         {
             node.IsWord = false;
         }
     }
     else
     {
         var subnode = node.TryFind(key[0]);
         if (subnode != null)
         {
             RemoveNode(key.Substring(1), subnode);
         }
     }
 }