uoc.ei.tads
Class ArbolBinario.RecorridoInorden<E>

java.lang.Object
  extended by uoc.ei.tads.ArbolBinario.RecorridoOrdenBasico<E>
      extended by uoc.ei.tads.ArbolBinario.RecorridoInorden<E>
All Implemented Interfaces:
java.io.Serializable, Recorrido<E>
Direct Known Subclasses:
ArbolBinario.RecorridoPostorden
Enclosing class:
ArbolBinario<E>

protected static class ArbolBinario.RecorridoInorden<E>
extends ArbolBinario.RecorridoOrdenBasico<E>

Clase que proporciona un recorrido de las posiciones. Basada en el pattern Iterator, soporta múltiples recorridos simultáneos y independientes del contenedor. Es sensible a eventuales alteraciones de la estructura de posiciones.

See Also:
Recorrido.haySiguiente(), Recorrido.siguiente(), Serialized Form

Field Summary
 
Fields inherited from class uoc.ei.tads.ArbolBinario.RecorridoOrdenBasico
arbol, pila
 
Constructor Summary
ArbolBinario.RecorridoInorden(ArbolBinario<E> arbol)
          Constructor.
 
Method Summary
protected  void apilaDescendientesConMasPrioridad(Posicion<E> padre)
          Los descendientes con más prioridad para el caso del recorrido inordre son el hijo izquierdo y sus descendientes.
protected  void apilaDescendientesConMenosPrioridad(Posicion<E> padre)
          Los descendientes con menos prioridad para el caso del recorrido inordre son el hijo derecho y sus descendientes.
 
Methods inherited from class uoc.ei.tads.ArbolBinario.RecorridoOrdenBasico
haySiguiente, siguiente
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArbolBinario.RecorridoInorden

public ArbolBinario.RecorridoInorden(ArbolBinario<E> arbol)
Constructor.

Parameters:
arbol - El arbol a recorrer.
Method Detail

apilaDescendientesConMasPrioridad

protected void apilaDescendientesConMasPrioridad(Posicion<E> padre)
Los descendientes con más prioridad para el caso del recorrido inordre son el hijo izquierdo y sus descendientes. Por lo tanto, apilamos el hijo izquierdo. Posteriormente, si el hijo izquierdo tiene algún descendiente con más prioridad, lo deberemos apilar también. Eso resulta en, en tal caso, apilar los descendientes izquierdo; es decir, el hijo izquierdo, el hijo izquierdo del hijo izquierdo, etc.

Specified by:
apilaDescendientesConMasPrioridad in class ArbolBinario.RecorridoOrdenBasico<E>

apilaDescendientesConMenosPrioridad

protected void apilaDescendientesConMenosPrioridad(Posicion<E> padre)
Los descendientes con menos prioridad para el caso del recorrido inordre son el hijo derecho y sus descendientes. Por lo tanto, empilamos el hijo derecho. Acto seguido pasamos a empilar los descendientes del hijo derecho que tienen más prioridad que este.

Specified by:
apilaDescendientesConMenosPrioridad in class ArbolBinario.RecorridoOrdenBasico<E>