uoc.ei.tads
Class ArbolAbstracto<E>

java.lang.Object
  extended by uoc.ei.tads.ArbolAbstracto<E>
All Implemented Interfaces:
java.io.Serializable, Arbol<E>, Contenedor<E>
Direct Known Subclasses:
ArbolBinario, ArbolGeneralDelegImpl

public abstract class ArbolAbstracto<E>
extends java.lang.Object
implements Arbol<E>

See Also:
Serialized Form

Nested Class Summary
protected static class ArbolAbstracto.RecorridoOrdenBasico<E>
          Clase que proporciona el comportamiento básico para los tres recorridos preorden, inordre y posorden.
protected static class ArbolAbstracto.RecorridoPorNiveles<E>
          Clase que proporciona un recorrido de las posiciones.
protected static class ArbolAbstracto.RecorridoPostorden<E>
          Clase que proporciona un recorrido de las posiciones.
protected static class ArbolAbstracto.RecorridoPreorden<E>
          Clase que proporciona un recorrido de las posiciones.
 
Constructor Summary
ArbolAbstracto()
           
 
Method Summary
 Iterador<E> elementos()
          Accesor de lectura de los elementos que hay al contenedor.
 boolean esHoja(Posicion<E> nodo)
          Comprueba si el arbol o subárbol tiene algún hijo.
 boolean estaVacio()
          Comprueba si el contenedor está vacío.
 int numElems(Posicion<E> posicion)
           
 int numHijos(Posicion<E> nodo)
          Método que retorna el número de hijos de un nodo.
 Recorrido<E> posiciones()
          Método que soporta múltiples recorridos, de las posiciones del contenedor, simultáneos e independientes entre ellos.
 Recorrido<E> recorridoPorNiveles()
          Recorrido por niveles de las posiciones del arbol.
 Recorrido<E> recorridoPostorden()
          Recorrido en posorden de las posiciones del arbol.
 Recorrido<E> recorridoPreorden()
          Recorrido en preorden de las posiciones del arbol.
 java.lang.String toString()
           
protected  void toString(java.lang.StringBuffer sb, Posicion<E> posicion)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface uoc.ei.tads.Arbol
borrar, hijos, insertar, intercambiar, raiz, reemplazar
 
Methods inherited from interface uoc.ei.tads.Contenedor
numElems
 

Constructor Detail

ArbolAbstracto

public ArbolAbstracto()
Method Detail

esHoja

public boolean esHoja(Posicion<E> nodo)
Comprueba si el arbol o subárbol tiene algún hijo.

Specified by:
esHoja in interface Arbol<E>
Parameters:
nodo - posición de referencia
Returns:
cierto si la posición tiene algún hijo y falso de lo contrario

estaVacio

public boolean estaVacio()
Description copied from interface: Contenedor
Comprueba si el contenedor está vacío.

Specified by:
estaVacio in interface Contenedor<E>
Returns:
cierto si el contenedor está vacío

numHijos

public int numHijos(Posicion<E> nodo)
Método que retorna el número de hijos de un nodo.

Parameters:
nodo - posición de referencia
Returns:
cantidad de hijos, o cero si es una hoja
Throws:
ExcepcionPosicionInvalida - si la posición es null o no válida

elementos

public Iterador<E> elementos()
Accesor de lectura de los elementos que hay al contenedor. Retorna una enumeración. Se puede obtener un recorrido con un par de líneas de código:
 for ( Iterador it = tad.elementos(); it.haySiguiente(); )
    System.out.println(it.siguiente()); 
Enumerar es simplemente enunciar la una detrás la otra (las cosas de una serie, las partes de un todo). Pero si el contenedor tiene definido algún tipo de ordenación o de recorrido, la enumeración debe ser consecuente y ofrecer los elementos por orden (FIFO, LIFO, inordre, etc.), sin alterar el estado actual del contenedor.

Specified by:
elementos in interface Contenedor<E>
Returns:
enumeración de los elementos del contenedor preorden
Throws:
ExcepcionPosicionInvalida - si se quiere obtener el siguiente elemento de la enumeración y este no existe
See Also:
Iterador.haySiguiente(), Iterador.siguiente()

posiciones

public Recorrido<E> posiciones()
Método que soporta múltiples recorridos, de las posiciones del contenedor, simultáneos e independientes entre ellos.

Specified by:
posiciones in interface Arbol<E>
Returns:
enumeración de las posiciones del contenedor por nivel

recorridoPreorden

public Recorrido<E> recorridoPreorden()
Description copied from interface: Arbol
Recorrido en preorden de las posiciones del arbol.

Specified by:
recorridoPreorden in interface Arbol<E>
Returns:
enumeración de las posiciones del contenedor preorden

recorridoPostorden

public Recorrido<E> recorridoPostorden()
Description copied from interface: Arbol
Recorrido en posorden de las posiciones del arbol.

Specified by:
recorridoPostorden in interface Arbol<E>
Returns:
enumeración de las posiciones del contenedor posorden

recorridoPorNiveles

public Recorrido<E> recorridoPorNiveles()
Description copied from interface: Arbol
Recorrido por niveles de las posiciones del arbol.

Specified by:
recorridoPorNiveles in interface Arbol<E>
Returns:
enumeración de las posiciones del contenedor por niveles

numElems

public int numElems(Posicion<E> posicion)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toString

protected void toString(java.lang.StringBuffer sb,
                        Posicion<E> posicion)