public void recorridoPorNiveles() { Cola <ArbolBinario <T> > cola = new Cola <ArbolBinario <T> >(); cola.encolar(this); while (!cola.esVacia()) { ArbolBinario <T> nodo = cola.desencolar(); Console.Write(nodo.getDatoRaiz() + " "); if (nodo.getHijoIzquierdo() != null) { cola.encolar(nodo.getHijoIzquierdo()); } if (nodo.getHijoDerecho() != null) { cola.encolar(nodo.getHijoDerecho()); } } }
//Agregar public void agregarNodo(ArbolBinario <T> nodoNuevo) { Cola <ArbolBinario <T> > cola = new Cola <ArbolBinario <T> >(); cola.encolar(this); while (!cola.esVacia()) { ArbolBinario <T> nodo = cola.desencolar(); if (nodo.getHijoIzquierdo() != null) //Verifico que el elemento encolado tenga hijo izquierdo { cola.encolar(nodo.getHijoIzquierdo()); } else //En caso de no tener, coloco al nodo nuevo alli. { if (nodoNuevo != null) //Sirve para no colocar al nodo nuevo en todos los espacios vacios { nodo.agregarHijoIzquierdo(nodoNuevo); nodoNuevo = null; //Una vez colocado lo pongo nulo para no colocarlo en otros lados } } if (nodo.getHijoDerecho() != null) //Verifico que el elemento encolado tenga hijo derecho { cola.encolar(nodo.getHijoDerecho()); } else //En caso de no tener, coloco al nodo nuevo alli. { if (nodoNuevo != null) //Sirve para no colocar al nodo nuevo en todos los espacios vacios { nodo.agregarHijoDerecho(nodoNuevo); nodoNuevo = null; //Una vez colocado lo pongo nulo para no colocarlo en otros lados } } } }