Ayuda a encolar Nodos

Iniciado por Ghio97, 18 Noviembre 2019, 19:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Ghio97

Hola tengo un problema al encolar mis nodos, solo encola al primero y despues nada.
Trato de realizar un metodo de amplitud por lo que la insercion es desde otra clase
inserto desde la clase Arbol para poder utilizarlos para diferentes metodos

public void insertar(String i) {
Cola p=new Cola();
Nodo n=new Nodo(i);

if(raiz==null) {
raiz=n;
p.encolar(n);
}else {
Nodo aux=raiz;
p.encolar(aux);
while(aux!=null) {
n.padre=aux;


if(n.llave.compareTo(aux.llave)>0) {
aux=aux.der;
}else {
aux=aux.izq;
}
}
if(n.llave.compareTo(n.padre.llave)<0) {
n.padre.izq=n;
}else {
n.padre.der=n;
}
}

}


Aqui voy encolando lo que inserte arriba

public void encolar(Nodo n) {
Nodo nuevo=new Nodo(n.llave);
if (cabeza==null) {
cabeza=nuevo;
ultimo=nuevo;
}else {
ultimo.siguiente=nuevo;
ultimo=nuevo;
}

}


Y todo deberia aparecer en cuando utilizo el metodo de recorrerAmp


public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;

if (n != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.encolar(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.encolar(aux=cola.eliminar()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/

if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.encolar(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprimir(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}
else {
System.out.println("No existen elementos para realizar el recorrido por Amplitud");
}
}


Pero solo aparece el primer nodo insertado y despues nada, es como si despues del primer nodo no encolara nada



Beginner Web

Prueba con esto bb

Código (java) [Seleccionar]
public class Nodo {

    char dato;
    Nodo sig;

}
}
}

Código (java) [Seleccionar]
public class Pila {

    private Nodo ultimo;

    public Pila() {
        ultimo = null;
    }

    public void insertar(char valor) {

        Nodo nuevo = new Nodo();
        nuevo.dato = valor;

        if (ultimo == null) {
            ultimo = nuevo;
        } else {
            nuevo.sig = ultimo;
            ultimo = nuevo;
        }
    }

    public char popStack() {

        char extraido;

        if (ultimo != null) {
            extraido = ultimo.dato;
            ultimo = ultimo.sig;
        } else {
            extraido = Character.MAX_VALUE;
        }
        return extraido;
    }

    public boolean emptyStack() {
        return ultimo == null;
    }

}


;-)
7w7

Ghio97