Tad ArbN<E>
{ E obtener(); void setDato(E x); List<ArbN<E>> darHijos(); void enlazar(ArbN<E> x);
boolean esHoja(); }
public class ArbNEntero implements ArbN<E>
{ //**Atributos** private Integer dato; private List<ArbN<Integer >> hijos; //**Constructor** public ArbNEntero(Integer x) { dato = x; hijos = new ArrayList<<>>(); } //**Metodos interesantes, el resto omitidos**
public void enlazar(ArbN<Integer> r)
{
hijos.add(r);
}
public boolean esHoja()
{
if(hijos.size() == 0)
return true;
else
return false;
} }
//*Metodo crear*
public ArbN<Integer> crear()
{
ArbN<Integer> raiz = new ArbNEntero<>(1);
ArbN<Integer> a10 = new ArbNEntero<>(10);
ArbN<Integer> a20 = new ArbNEntero<>(20);
ArbN<Integer> a30 = new ArbNEntero<>(30);
ArbN<Integer> a11 = new ArbNEntero<>(11);
ArbN<Integer> a14 = new ArbNEntero<>(14);
ArbN<Integer> a17 = new ArbNEntero<>(17);
ArbN<Integer> a33 = new ArbNEntero<>(33);
ArbN<Integer> a39 = new ArbNEntero<>(39);
//**Continua siguiente diapositiva**//
raiz.enlazar(a10);
raiz.enlazar(a20);
raiz.enlazar(a30);
a10.enlazar(a11);
a10.enlazar(a14);
a10.enlazar(a17);
a30.enlazar(a33);
a30.enlazar(a39);
}
public void impPreorden(ArbN<Integer> r)
{
if(r!=null)
{
System.out.println(""+ r.darElemento());
for(int i=0;i<r.darHijos().size();i++)
{
ArbN<Integer> hijo = r.darHijos().get(i);
impPreorden(hijo);
}
}
}
public void impPostorden(ArbN<Integer> r)
{
if(r!=null)
{
for(int i=0;i<r.darHijos().size();i++)
{
ArbN<Integer> hijo = r.darHijos().get(i);
impPostorden(hijo);
}
System.out.println(""+ r.darElemento());
}
}
public void impInorden(ArbN<Integer> r)
{
if(r!=null)
{
impInorden(r.darHijos().get(0));
System.out.println(""+ r.darElemento());
for(int i=1;i<r.darHijos().size();i++)
{
ArbN<Integer> hijo = r.darHijos().get(i);
impPostorden(hijo);
}
}
}
public int darAltura(ArbN<Integer> r)
{
if(r!=null)
return r.darAltura();
else
return 0;
}
//*Método polimórfico siguiente diapositiva*
public int darAltura(ArbN<Integer> r)
{
if(r.esHoja())
return 1;
else
{
int maxAltura = 0;
for(int i=0;i<r.darHijos().size();i++)
{
ArbN<Integer> hijo = r.darHijos().get(i);
int aux = hijo.darAltura();
if(aux > maxAltura)
maxAltura = aux;
}
return maxAltura + 1;
}
}
http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/datos/presentaciones/n16_arbolesnarios.pdf
http://www.it.uc3m.es/java/prog/units/arboles/guides/2/guide_es_solution.html