uoc.ei.tads
Interface Arbol<E>

All Superinterfaces:
Contenedor<E>, java.io.Serializable
All Known Implementing Classes:
ArbolAbstracto, ArbolAVL, ArbolBinario, ArbolBinarioEncadenadoImpl, ArbolBinarioVectorImpl, ArbolGeneralDelegImpl, ColaConPrioridad.ArbolBinarioQuasicompletoVectorImpl

public interface Arbol<E>
extends Contenedor<E>

Interfaz que define las operaciones de cualquiera arbol (tree). Los árboles son estructuras que relacionan sus elementos, llamados nodos, formando jerarquías: todo nodo (excepto la raíz que es la cabeza de la jerarquía) es descendiente de un nodo único, y puede ser ascendente de otros nodos (cuando no tiene descendientes se llama 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, los llamados árboles binarios (binary tree).


Method Summary
 void borrar(Posicion<E> padre, Posicion<E> hijo)
          Borra el subárbol representado por la posición hijo, si se puede.
 boolean esHoja(Posicion<E> pos)
          Comprueba si el arbol o subárbol tiene algún hijo.
 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ón recibida, si se puede.
 void intercambiar(Posicion<E> pos1, Posicion<E> pos2)
          Intercambia en el arbol los elementos contenidos a las posiciones recibidas.
 Recorrido<E> posiciones()
          Recorrido de las posiciones del arbol.
 Posicion<E> raiz()
          Accesor de lectura de la raíz del arbol, si hay.
 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.
 E reemplazar(Posicion<E> pos, E elem)
          Reemplaza el elemento contenido en la posición recibida.
 
Methods inherited from interface uoc.ei.tads.Contenedor
elementos, estaVacio, numElems
 

Method Detail

raiz

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

Returns:
raíz del arbol

hijos

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

esHoja

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

Parameters:
pos - posición de referencia
Returns:
falso o cierto, según si tiene algún hijo o no tiene ningún

insertar

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

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

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

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

intercambiar

void intercambiar(Posicion<E> pos1,
                  Posicion<E> pos2)
Intercambia en el arbol los elementos contenidos a las posiciones recibidas. El arbol resultante contendrá los mismos elementos que tenía, excepto por los dos elementos recibos como parámetro, que aparecerán intercambiados.

El hecho de si los objetos posición se intercambian, o bien el que se intercambia son los elementos contenidos en las posiciones, dependerá de cada implementación concreta de arbol.

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

borrar

void borrar(Posicion<E> padre,
            Posicion<E> hijo)
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

posiciones

Recorrido<E> posiciones()
Recorrido de las posiciones del arbol.

Returns:
enumeración de las posiciones del contenedor por nivel

recorridoPreorden

Recorrido<E> recorridoPreorden()
Recorrido en preorden de las posiciones del arbol.

Returns:
enumeración de las posiciones del contenedor preorden

recorridoPostorden

Recorrido<E> recorridoPostorden()
Recorrido en posorden de las posiciones del arbol.

Returns:
enumeración de las posiciones del contenedor posorden

recorridoPorNiveles

Recorrido<E> recorridoPorNiveles()
Recorrido por niveles de las posiciones del arbol.

Returns:
enumeración de las posiciones del contenedor por niveles