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?
Código:
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;
}
}
}
****************************************************
Código:
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");
}
}
}
*******************************************************************
Código:
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**** ");
}
}