示例#1
0
        protected Nodo InsertarEnArbol(Nodo RaizSub, IComparador dato)
        {
            if (RaizSub == null)
            {
                RaizSub = new Nodo(dato);
            }
            else if (dato.MenorQue(RaizSub.Dato))
            {
                Nodo iz;
                iz = InsertarEnArbol(RaizSub.NodoIzquierdo, dato);
                RaizSub.NodoIzquierdo = iz;
            }
            else if (dato.MayorQue(RaizSub.Dato))
            {
                Nodo dr;
                dr = InsertarEnArbol(RaizSub.NodoDerecho, dato);
                RaizSub.NodoDerecho = dr;
            }
            else
            {
                throw new Exception("Nodo duplicado");
            }

            return(RaizSub);
        }
示例#2
0
 protected Nodo EliminarEnArbol(Nodo RaizSub, IComparador dato)
 {
     if (RaizSub == null)
     {
         throw new Exception("No encontrado nodo + clave");
     }
     else if (dato.MenorQue(Raiz.NodoIzquierdo))
     {
         Nodo iz;
         iz = EliminarEnArbol(RaizSub.NodoIzquierdo, dato);
         RaizSub.NodoIzquierdo = iz;
     }
     else if (dato.MayorQue(RaizSub.NodoDerecho))
     {
         Nodo dr;
         dr = EliminarEnArbol(RaizSub.NodoDerecho, dato);
         RaizSub.NodoDerecho = dr;
     }
     else
     {
         Nodo q;
         q = RaizSub;
         if (q.NodoIzquierdo == null)
         {
             RaizSub = q.NodoDerecho;
         }
         else if (q.NodoDerecho == null)
         {
             RaizSub = q.NodoIzquierdo;
         }
         else
         {
             q = Reemplazar(q);
         }
         q = null;
     }
     return(RaizSub);
 }