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
Código:
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
Código:
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
Código:
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