private void  InsertTo(FreqDictionaryNode node, string key)
 {
     if (String.Compare(node.Key, key) < 0)
     {
         if (node.Left == null)
         {
             node.Left = new FreqDictionaryNode(key);
         }
         else
         {
             InsertTo(node.Left, key);
         }
     }
     else if (String.Compare(node.Key, key) > 0)
     {
         if (node.Right == null)
         {
             node.Right = new FreqDictionaryNode(key);
         }
         else
         {
             InsertTo(node.Right, key);
         }
     }
     else if (String.Compare(node.Key, key) == 0)
     {
         node.Count++;
     }
 }
        void Insert(string key)
        {
            // Первый случай: дерево пустое

            if (_head == null)
            {
                _head = new FreqDictionaryNode(key);
                //_head.Left = _head.Right = null;
                _head.Count = 1;
            }

            // Второй случай: дерево не пустое, поэтому применяем рекурсивный алгорит
            //                для поиска места добавления узла

            else
            {
                InsertTo(_head, key);

                //int rez = String.Compare(node.Key, key);
                //if (rez == 0)
                //{
                //    node.Count++;
                //    return 0;
                //}
                //else
                //    if (rez > 0)
                //    return Insert(node.Left, key);
                //else return Insert(node.Right, key);
            }
        }
 void Show(FreqDictionaryNode node)
 {
     if (node != null)
     {
         Show(node.Right);
         Console.WriteLine("{0,-3} - {1}", node.Key, node.Count);
         Show(node.Left);
     }
 }