Metodo de amplitud Nodos

Iniciado por Ghio97, 16 Noviembre 2019, 18:05 PM

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

Ghio97

Hola tengo un problema.
Estoy creando tres clases clases (Arbol,  Cola y Main), Arbol tienes el metodo insertar(que recibe como parametro una cadena y ese parametro se convierte en el parametro de un Nodo) dentro de insertar llamo al metodo insert que es un metodo de la clase cola(insert recibe como parametro un nodo).
En la clase cola deberia meter en una cola los nodos insertados para depues imprimirlos , lo que busco al final es hacer el rocorrido por ampilitud utilizando la clase cola y los nodos insertados pero estoy atorado en insertar los nodos y mostrarlos
alguien me podria ayudar porfavor?

package estructura;

public class Arbol {
Nodo raiz;


public Arbol() {
raiz=null;
}


//Insertar

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

if(raiz==null) {
raiz=n;
}else {
Nodo aux=raiz;
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;
}
}

}

/*public void recorrerAmp(Nodo n) {
Cola cola,colaux;
Nodo aux;
for(int i=0;i<49;i++) {

}

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.push(n); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaux.push(aux=(Nodo) cola.pop()); /*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.push(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.push(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaux.imprime(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}

} */




//metodo en PREORDEN

public void recorrerPre(Nodo n) {
if(n!=null) {
System.out.println(n.llave);
recorrerPre(n.izq);
recorrerPre(n.der);
}
}



//metodo en ORDEN

public void recorrerOrd(Nodo n) {
if(n!=null) {
recorrerOrd(n.izq);
System.out.println(n.llave);
recorrerOrd(n.der);
}
}

//metodo en PostOrden
public void recorrerPos(Nodo n) {

if(n!=null) {
recorrerPos(n.izq);
recorrerPos(n.der);
System.out.println(n.llave);
}
}

public class Nodo{
public Nodo padre;
public Nodo der,izq;
public String llave;
public Nodo siguiente;



public Nodo(String indice) {
llave=indice;
der=null;
izq=null;
padre=null;
}

}






}
  Esta es mi clase Arbol

****************************************************


package estructura;

public class Cola extends Arbol {
Nodo frente,fin;


public Cola () {
frente=null;
fin=null;
}

/*public int colavacia() {
if(frente==null&&fin==null) {
return 1;
}return 0;
}*/


public void inser(Nodo c ) {
Nodo s=new Nodo(c.llave);
if(frente==null) {
frente=s;
frente.siguiente=null;
fin=s;
}else {
fin=s;
s.siguiente=null;
fin=s;
}
}
// pop
public void pop() {

}

public void imprime() {

    Nodo k=new Nodo();
k=frente;
if(frente!=null) {
while(k!=null) {
System.out.println(" "+k.llave);
k=k.siguiente;
}
}else {
System.out.println("La cola se encuentra vacia1");
}

}
}
Esta es mi clase Cola
*******************************************************************



package estructura;

public class Main extends Arbol {

public static void main(String[] args) {
Arbol arbol=new Arbol();
Cola c1=new Cola();
arbol.insertar("maria");
arbol.insertar("maria");
arbol.insertar("oso");
arbol.insertar("do");
arbol.insertar("p");
arbol.insertar("maria");

System.out.println("****Recorrido en Pre-Orden****");
arbol.recorrerPre(arbol.raiz);

System.out.println("****Recorrido en Orden****");
arbol.recorrerOrd(arbol.raiz);

System.out.println("****Recorrido en Post-Orden****");
arbol.recorrerPos(arbol.raiz);

System.out.println("****Recorrido en Amplitud****");
c1.imprime();

       
        System.out.println(" ");
        System.out.println("****Recorrido en profundidad**** ");

}     
}

Este es mi Main