Está en la página 1de 4

Arbol2_3

/**
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*$Id:Arbol2_3.java,v1.22008/09/1711:00:43alf-moraExp$
*UniversidaddelosAndes(Bogot-Colombia)
*DepartamentodeIngenieradeSistemasyComputacin
*LicenciadobajoelesquemaAcademicFreeLicenseversion2.1
*
*ProyectoCupi2(http://cupi2.uniandes.edu.co)
*Framework:Cupi2Collections
*Autor:JorgeVillalobos-25/02/2006
*Autor:PabloBarvo-25/02/2006
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
package uniandes.cupi2.collections.arbol.arbol2_3;
import java.io.Serializable;
import
import
import
import
import
import

uniandes.cupi2.collections.iterador.Iterador;
uniandes.cupi2.collections.iterador.IteradorException;
uniandes.cupi2.collections.iterador.IteradorSimple;
uniandes.cupi2.collections.arbol.ElementoExisteException;
uniandes.cupi2.collections.arbol.ElementoNoExisteException;
uniandes.cupi2.collections.arbol.IArbolOrdenado;

/**
*Implementacindeunrbol2-3
*
* @param <T> Tipodedatosquecontienecadanododelrbol.Losnodosdebenimplementar
lainterfacecomparable
*/
publicclass Arbol2_3<T extends Comparable<? super T>> implements Serializable,
IArbolOrdenado<T>
{
//----------------------------------------------------------------//Constantes
//----------------------------------------------------------------/**
*Constanteparalaserializacin
*/
privatestaticfinal long serialVersionUID= 1L;
//----------------------------------------------------------------//Atributos

1/4

Arbol2_3

//----------------------------------------------------------------/**
*Razdelrbol2-3
*/
private Nodo2_3<T>raiz;
/**
*Pesodelrbol2-3
*/
private int peso;
//----------------------------------------------------------------//Constructores
//----------------------------------------------------------------/**
*Construyeunnuevorbolvaco. <br>
* <b>post: </b> Seconstruyunrbolvaco,conraznull.
*/
public Arbol2_3()
{
raiz= null;
}
//----------------------------------------------------------------//Mtodos
//----------------------------------------------------------------/**
*Devuelvelarazdelrbolparasernavegada. <br>
* <b>post: </b> Seretornlarazdelrbol.
* @return Razdelrbol
*/
public Nodo2_3<T>darRaiz()
{
return raiz;
}
/*(non-Javadoc)
*@seeuniandes.cupi2.collections.arbol.IArbol#buscar(java.lang.Object)
*/
public Tbuscar( Tmodelo )
{
return ( raiz!= null ) ?raiz.buscar( modelo ) : null;
}

2/4

Arbol2_3

/*(non-Javadoc)
*@seeuniandes.cupi2.collections.arbol.IArbol#darAltura()
*/
public int darAltura()
{
return raiz== null ? 0 :raiz.darAltura();
}
/*(non-Javadoc)
*@seeuniandes.cupi2.collections.arbol.IArbol#darPeso()
*/
public int darPeso()
{
return peso;
}
/*(non-Javadoc)
*@seeuniandes.cupi2.collections.arbol.IArbolOrdenado#insertar(java.lang.Comparable)
*/
public void insertar( Telemento ) throws ElementoExisteException
{
if( raiz== null )
{
//Caso1:elrbolesvaco
raiz= new Nodo2_3<T>( elemento );
}
else
{
//Caso2:elrbolnoesvaco
raiz=raiz.insertar( elemento );
}
peso++;
}
/*(non-Javadoc)
*@seeuniandes.cupi2.collections.arbol.IArbolOrdenado#eliminar(java.lang.Comparable)
*/
public void eliminar( Telemento ) throws ElementoNoExisteException
{
if( raiz!= null )
{
//Caso1:elrbolnoesvaco
raiz=raiz.eliminar( elemento );
peso--;

3/4

Arbol2_3

}
else
{
//Caso2:elrbolesvaco
thrownew ElementoNoExisteException( "Elelementoespecificadonoexisteenelrbol" );
}
}
/**
*Devuelveloselementosdelrboleninorden. <br>
* <b>post: </b> Seretornoeliteradorpararecorrerloselementosdelrboleninorden.
* @return Iteradorpararecorrerloselementosdelrboleninorden.Diferentedenull.
*/
public Iterador<T>inorden()
{
IteradorSimple<T>resultado= new IteradorSimple<T>( peso );
if( raiz!= null )
{
try
{
raiz.inorden( resultado );
}
catch( IteradorExceptione )
{
//Nuncadeberalanzarestaexcepcinporqueeltamaodel
//iteradoreselpesodelrbol
}
}
return resultado;
}
}

4/4

También podría gustarte