コード例 #1
0
 private void AddNode(string key, T data, ImplementedNode <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 ImplementedNode <T>(key[0], data, node.Prefix + key[0]);
             node.SubNodes.Add(key[0], newNode);
             AddNode(key.Substring(1), data, newNode);
         }
     }
 }
コード例 #2
0
 /// <summary>
 /// Удалить узел.
 /// </summary>
 /// <param name="key">Ключ.</param>
 /// <param name="node">Узел.</param>
 private void RemoveNode(string key, ImplementedNode <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);
         }
     }
 }
コード例 #3
0
        /// <summary>
        /// Поиск узла.
        /// </summary>
        /// <param name="key">Ключ.</param>
        /// <param name="node">Ухел.</param>
        /// <param name="value">Значение.</param>
        /// <returns></returns>
        private bool SearchNode(string key, ImplementedNode <T> node, out T value)
        {
            value = default(T);
            var result = false;

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

            return(result);
        }
コード例 #4
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 public ImplementedTree()
 {
     root  = new ImplementedNode <T>('\0', default(T), "");
     Count = 1;
 }