Implementación de Árbol General en Java: Código Fuente Comentado
Classified in Design and Engineering
Written on in
English with a size of 2.57 KB
public class NuevoArbolGeneral1 implements ArbolGeneral{
private NodoArbol1 nodoRaiz;
public NuevoArbolGeneral1()
{ nodoRaiz = null; }
public NuevoArbolGeneral1(E elemRaiz, NuevoArbolGeneral1 ... hijos) throws NullPointerException {
if (hijos==null) throw new NullPointerException();
if (hijos.length == 0) nodoRaiz=new NodoArbol1<>(elemRaiz, null, null, null);
else { int i=0;
for (;i<hijos.length-1;i++)
hijos[i].nodoRaiz.setHer(hijos[i+1].nodoRaiz); }
nodoRaiz=new NodoArbol1<>(elemRaiz, hijos[0].nodoRaiz, null, hijos[i].nodoRaiz); } }
private NuevoArbolGeneral1(NodoArbol1 raiz) { nodoRaiz = raiz; }
public boolean esVacio() { return nodoRaiz == null; }
public E raiz() throws ArbolVacioExcepcion {
if (esVacio()) throw new ArbolVacioExcepcion("raiz: Árbol vacío");
return nodoRaiz.getElemento(); }
public boolean esta (E elemento) {
return esta(nodoRaiz, elemento); }
private boolean esta (NodoArbol1 raiz, E elemento) {
if (raiz == null) return false;
if (raiz.getElemento().equals(elemento)) return true;
NodoArbol1 hijo = raiz.getHijo();
while (hijo != null){
if (esta(hijo,elemento)) return true;
else hijo=hijo.getHer(); }
return false; }
public ArbolGeneral hijoMasIzq() throws ArbolVacioExcepcion {
if (esVacio())
throw new ArbolVacioExcepcion("hijoIzq: Árbol vacío");
return new NuevoArbolGeneral1<>(nodoRaiz.getHijo()); }
public ArbolGeneral hermanoDer() throws ArbolVacioExcepcion {
if (esVacio())
throw new ArbolVacioExcepcion("hermanoDer: Árbol vacío");
return new NuevoArbolGeneral1<>(nodoRaiz.getHer()); }
public void setRaiz(E elemRaiz) throws ArbolVacioExcepcion {
if (esVacio()) throw new ArbolVacioExcepcion("raiz: Árbol vacío");
nodoRaiz.setElemento(elemRaiz); }
public void setHijo(ArbolGeneral hijo) throws ArbolVacioExcepcion, NullPointerException
{
if (hijo==null)
throw new NullPointerException();
if (esVacio())
throw new ArbolVacioExcepcion("setHijoIzq: Árbol vacío");
if (hijoMasIzq().esVacio()){
nodoRaiz.setHijo(((NuevoArbolGeneral1)hijo).nodoRaiz);
nodoRaiz.setUltHijo(((NuevoArbolGeneral1)hijo).nodoRaiz);
}
else {
nodoRaiz.getUltHijo().setHer(((NuevoArbolGeneral1)hijo).nodoRaiz);
nodoRaiz.setUltHijo(((NuevoArbolGeneral1)hijo).nodoRaiz); } }
public void suprimir() {
nodoRaiz = null; }
}