コード例 #1
0
        //método interno para realizar la operación
        protected Nodo eliminar(Nodo raizSub, Comparador dato)
        {
            if (raizSub == null)
            {
                return(raizSub);
            }

            else if (dato.NomDiferente(raizSub.valorNodo()))
            {
                Nodo iz;
                iz = eliminar(raizSub.subarbolIzdo(), dato);
                raizSub.ramaIzdo(iz);
            }
            else if (dato.NomDiferente(raizSub.valorNodo()))
            {
                Nodo dr;
                dr = eliminar(raizSub.subarbolDcho(), dato);
                raizSub.ramaDcho(dr);
            }

            else // Nodo encontrado
            {
                Nodo q;
                q = raizSub; // nodo a quitar del árbol
                if (q.subarbolIzdo() == null)
                {
                    raizSub = q.subarbolDcho();
                }
                else if (q.subarbolDcho() == null)
                {
                    raizSub = q.subarbolIzdo();
                }
                else
                { // tiene rama izquierda y derecha
                    q = reemplazar(q);
                }
                q = null;
            }
            return(raizSub);
        }
コード例 #2
0
 //método interno para realizar la operación
 protected Nodo insertar(Nodo raizSub, Comparador dato)
 {
     if (raizSub == null)
     {
         raizSub = new Nodo(dato);
     }
     else if (dato.NomDiferente(raizSub.valorNodo()))
     {
         Nodo iz;
         iz = insertar(raizSub.subarbolIzdo(), dato);
         raizSub.ramaIzdo(iz);
     }
     else if (dato.NomDiferente(raizSub.valorNodo()))
     {
         Nodo dr;
         dr = insertar(raizSub.subarbolDcho(), dato);
         raizSub.ramaDcho(dr);
     }
     else
     {
         throw new Exception("Nodo duplicado");
     }
     return(raizSub);
 }