uoc.ei.tads
Class ArbolGeneralDelegImpl<E>

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

public class ArbolGeneralDelegImpl<E>
extends ArbolAbstracto<E>

Les arboles son estructuras que relacionan sus elementos, llamados nodos, formando jerarquías: todo nodo (excepto la raíz) es descendiente de un nodo único, y puede ser ascendente de otros nodos (cuando no tiene descendientes se nombra a hoja). Cuando un nodo puede tener un número indeterminado de hijos hablamos de árboles generales (general tree) y, si tiene un número fijo N, de árboles de orden N (n-ary tree); en estos últimos destaca el caso de N = 2, les llamados árboles binarios (binary tree).

See Also:
Serialized Form

Nested Class Summary
protected static class ArbolGeneralDelegImpl.RecorridoHijos<E>
          Clase que proporciona un recorrido de las posiciones.
 
Nested classes/interfaces inherited from class uoc.ei.tads.ArbolAbstracto
ArbolAbstracto.RecorridoOrdenBasico<E>, ArbolAbstracto.RecorridoPorNiveles<E>, ArbolAbstracto.RecorridoPostorden<E>, ArbolAbstracto.RecorridoPreorden<E>
 
Field Summary
protected  ArbolBinarioEncadenadoImpl<E> ab
          Arbol binario que implementa las operaciones por delegación.
 
Constructor Summary
ArbolGeneralDelegImpl()
           
 
Method Summary
 void borrar(Posicion<E> padre, Posicion<E> hijo)
          Borra el subárbol representado por la posición hijo, si se puede.
protected  ArbolBinarioEncadenadoImpl<E> crearArbolRepresentacion()
           
 Recorrido<E> hijos(Posicion<E> padre)
          Método que soporta múltiples recorridos, de las posiciones hijas de la posición de referencia, simultáneos e independientes entre ellos.
 Posicion<E> insertar(Posicion<E> padre, E elem)
          Añade un elemento como nuevo hijo de la posició recibida, si se puede.
 void intercambiar(Posicion<E> pos1, Posicion<E> pos2)
          Intercambia los elementos contenidos en las las posiciones recibidas.
 int numElems()
          Accesor de lectura del número de elementos que hay en el contenedor.
 Posicion<E> raiz()
          Accesor de lectura de la raíz del arbol, si hay.
 E reemplazar(Posicion<E> pos, E elem)
          Reemplaza el elemento contenido en la posición rebuda.
 
Methods inherited from class uoc.ei.tads.ArbolAbstracto
elementos, esHoja, estaVacio, numElems, numHijos, posiciones, recorridoPorNiveles, recorridoPostorden, recorridoPreorden, toString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ab

protected ArbolBinarioEncadenadoImpl<E> ab
Arbol binario que implementa las operaciones por delegación.

Constructor Detail

ArbolGeneralDelegImpl

public ArbolGeneralDelegImpl()
Method Detail

crearArbolRepresentacion

protected ArbolBinarioEncadenadoImpl<E> crearArbolRepresentacion()

numElems

public int numElems()
Accesor de lectura del número de elementos que hay en el contenedor.

Returns:
número de elementos que contiene actualmente

raiz

public Posicion<E> raiz()
Accesor de lectura de la raíz del arbol, si hay.

Returns:
raíz del arbol

hijos

public Recorrido<E> hijos(Posicion<E> padre)
Método que soporta múltiples recorridos, de las posiciones hijas de la posición de referencia, simultáneos e independientes entre ellos.

Parameters:
padre - posición de referencia
Returns:
enumeración de las posiciones hijas
Throws:
ExcepcionPosicionInvalida - si la posición es null o no válida

insertar

public Posicion<E> insertar(Posicion<E> padre,
                            E elem)
Añade un elemento como nuevo hijo de la posició recibida, si se puede. Si el padre es null, se añade en la raíz; si es una hoja, se añade como primer hijo (hijo más a la izquierda); sino, se añade a la primera posición libre (de izquierda a derecha).

Parameters:
padre - posición de referencia
elem - elemento que se quiere añadir al arbol
Returns:
nuevo hijo; o la raíz, si el padre era null

reemplazar

public E reemplazar(Posicion<E> pos,
                    E elem)
Reemplaza el elemento contenido en la posición rebuda.

Parameters:
elem - nuevo elemento
pos - posición de referencia
Returns:
elemento que había en la posición

intercambiar

public void intercambiar(Posicion<E> pos1,
                         Posicion<E> pos2)
Intercambia los elementos contenidos en las las posiciones recibidas. Las posiciones no son intercambiadas.

Parameters:
pos1 - primera de las dos posiciones de referencia
pos2 - segunda de las dos posiciones de referencia

borrar

public void borrar(Posicion<E> padre,
                   Posicion<E> hijo)
            throws ExcepcionPosicionInvalida
Borra el subárbol representado por la posición hijo, si se puede. Si la posición del padre es null, borra el arbol entero.

Parameters:
padre - posición del padre; puede ser null
hijo - posición del hijo
Throws:
ExcepcionPosicionInvalida - si alguna posición es no válida