Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Clase Arbol General, Apuntes de Informática

Este documento contiene la definición de la clase arbol general en java, que permite representar árboles generales de forma recursiva mediante nodos que contienen elementos genericos y listas de hijos. La clase arbol general incluye métodos para crear árboles vacíos y llenos, comprobar si está vacío, obtener la raíz, acceder a los hijos, insertar nuevos hijos, localizar un elemento, comprobar si pertenece a un árbol, eliminar un elemento y obtener el padre de un elemento. Además, incluye métodos para obtener la altura y la profundidad de un elemento, comprobar si es una hoja y sobreescribir el método tostring para mostrar la estructura del árbol.

Tipo: Apuntes

2012/2013

Subido el 01/09/2013

iugam
iugam 🇪🇸

2 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
package arboles;
import listas.Lista;
import colas.*;
public class arbolGeneral<Elemento> implements Cloneable{
private Elemento raiz;
private Lista<arbolGeneral<Elemento>> hijos;
public arbolGeneral(){
this(null);//raiz=null
}
public arbolGeneral(Elemento ob){
raiz=ob;
hijos=new Lista<arbolGeneral<Elemento>>();
}
public arbolGeneral(Elemento ob, Lista<arbolGeneral<Elemento>> h){
this(ob);
if(raiz!=null && h!=null) hijos=h;
}
public boolean esVacio(){
return raiz==null;
}
public Elemento raiz(){
return raiz;
}
protected Lista<arbolGeneral<Elemento>> hijos(){//ojo las referencias son
las mismas
return hijos;
}
public Lista<Elemento> hijosOb(){
//son las raices nada mas
Lista<Elemento> hijos=new Lista<Elemento>();
if(!esVacio()){
Lista<arbolGeneral<Elemento>> aux=hijos();
while (!aux.esVacia()){
hijos.insertarFinal(aux.primero().raiz());
aux=aux.resto();
}
}
return hijos;
}
public void nuevoHijo(Elemento e){
if(esVacio()){
raiz=e;
hijos=new Lista<arbolGeneral<Elemento>>();
}
else nuevoHijo(new arbolGeneral<Elemento>(e));
}
public void nuevoHijo(arbolGeneral<Elemento> a){
if(a!=this && !a.esVacio()) hijos.insertarFinal(a);
}
pf3
pf4

Vista previa parcial del texto

¡Descarga Clase Arbol General y más Apuntes en PDF de Informática solo en Docsity!

package arboles; import listas.Lista; import colas.*;

public class arbolGeneral implements Cloneable{ private Elemento raiz; private Lista<arbolGeneral> hijos;

public arbolGeneral(){ this(null);//raiz=null }

public arbolGeneral(Elemento ob){ raiz=ob; hijos=new Lista<arbolGeneral>(); }

public arbolGeneral(Elemento ob, Lista<arbolGeneral> h){ this(ob); if(raiz!=null && h!=null) hijos=h; }

public boolean esVacio(){ return raiz==null; }

public Elemento raiz(){ return raiz; }

protected Lista<arbolGeneral> hijos(){//ojo las referencias son las mismas return hijos; }

public Lista hijosOb(){ //son las raices nada mas Lista hijos=new Lista(); if(!esVacio()){ Lista<arbolGeneral> aux=hijos(); while (!aux.esVacia()){ hijos.insertarFinal(aux.primero().raiz()); aux=aux.resto(); } } return hijos; }

public void nuevoHijo(Elemento e){ if(esVacio()){ raiz=e; hijos=new Lista<arbolGeneral>(); } else nuevoHijo(new arbolGeneral(e)); }

public void nuevoHijo(arbolGeneral a){ if(a!=this && !a.esVacio()) hijos.insertarFinal(a); }

public arbolGeneral localiza(Elemento ob){ arbolGeneral loca=new arbolGeneral(); if (!esVacio()){ if (raiz().equals(ob)) loca=this; else { Lista<arbolGeneral> hijos=hijos(); while(!hijos.esVacia() && loca.esVacio()){ loca=hijos.primero().localiza(ob); hijos=hijos.resto(); } } } return loca; }//localiza

public boolean pertenece(Elemento ob){ return !localiza(ob).esVacio(); }

public void eliminar(Elemento dato){ //elimina todas las apariciones de dato y sus ramas if(!esVacio()){ if (raiz().equals(dato)){ raiz=null; hijos=new Lista<arbolGeneral>(); } else{ Lista<arbolGeneral> hijos=hijos(); while(hijosOb().posicion(dato)>0) hijos.eliminaN(hijosOb().posicion(dato)); while(!hijos.esVacia()){ hijos.primero().eliminar(dato); hijos=hijos.resto(); } } } }

public arbolGeneral padre(Elemento ob){ arbolGeneral aux=new arbolGeneral(); if (!esVacio()){ if (hijosOb().pertenece(ob)) aux=this; else{ Lista<arbolGeneral> hijos=hijos(); for (int n=1;n<=hijos.longitud() && aux.esVacio();n++) aux=hijos.elementoN(n).padre(ob); } } return aux; }

@Override public String toString(){ return "\n"+toString(0); }

public String toString(int espacios){ String linea="\n"; for (int e=0;e<=espacios;e++) linea=linea+" "; if(esVacio()) linea=linea+"vacio"; else{ linea=linea+raiz().toString()+" "+getClass();

return iguales; }

public Lista recAnchura(){ Cola<arbolGeneral> ar=new colaDinamica<arbolGeneral>(); Lista rec=new Lista(); if(!esVacio()){ ar.añadir(this); while(!ar.esVacia()){ arbolGeneral p=ar.primero(); ar.quitar(); rec.insertarFinal(p.raiz()); Lista<arbolGeneral> hijos=p.hijos(); while(!hijos.esVacia()){ ar.añadir(hijos.primero()); hijos=hijos.resto(); } } } return rec; }

@Override public arbolGeneral clone()throws CloneNotSupportedException{ arbolGeneral copia=new arbolGeneral(); if(!esVacio()){ copia=new arbolGeneral(raiz()); Lista<arbolGeneral> hijos=hijos(); while(!hijos.esVacia()){//mas profunda que copia.hijos=hijos.clone() copia.hijos().insertarFinal(hijos.primero().clone()); hijos=hijos.resto(); } } return copia; }//clone }//arbolGeneral