Пример #1
0
 bool RecursiveInsert(T value, MultiPathNode <T> SubTree)
 {
     if (!SubTree.IsFull())
     {
         SubTree.Enlist(value);
         return(true);
     }
     else
     {
         Node <T> aux = new Node <T>();
         aux = SubTree.PeekNode(value);
         if (aux != null)
         {
             if (aux.prev == null && value.CompareTo(aux.t_object) < 0)
             {
                 if (aux.LeftChild != null)
                 {
                     return(RecursiveInsert(value, aux.LeftChild));
                 }
                 else
                 {
                     CreateNode(aux, value, true);
                     return(true);
                 }
             }
             else
             {
                 if (aux.RightChild != null)
                 {
                     return(RecursiveInsert(value, aux.RightChild));
                 }
                 else
                 {
                     CreateNode(aux, value, false);
                     return(true);
                 }
             }
         }
         else
         {
             return(false);
         }
     }
 }
Пример #2
0
 public bool Insert(T value)
 {
     if (!Root.IsFull())
     {
         Root.Enlist(value);
         return(true);
     }
     else
     {
         Node <T> aux = new Node <T>();
         aux = Root.PeekNode(value);
         if (aux != null)
         {
             if (aux.prev == null && value.CompareTo(aux.t_object) < 0)
             {
                 if (aux.LeftChild != null)
                 {
                     return(RecursiveInsert(value, aux.LeftChild));
                 }
                 else
                 {
                     CreateNode(aux, value, true);
                     return(true);
                 }
             }
             else
             {
                 if (aux.RightChild != null)
                 {
                     return(RecursiveInsert(value, aux.RightChild));
                 }
                 else
                 {
                     CreateNode(aux, value, false);
                     return(true);
                 }
             }
         }
         else
         {
             return(false);
         }
     }
 }