uoc.ei.tads
Class ArbreAbstracte.RecorregutOrdreBasic<E>

java.lang.Object
  extended by uoc.ei.tads.ArbreAbstracte.RecorregutOrdreBasic<E>
All Implemented Interfaces:
java.io.Serializable, Recorregut<E>
Direct Known Subclasses:
ArbreAbstracte.RecorregutPostordre, ArbreAbstracte.RecorregutPreordre
Enclosing class:
ArbreAbstracte<E>

protected abstract static class ArbreAbstracte.RecorregutOrdreBasic<E>
extends java.lang.Object
implements Recorregut<E>

Classe que proporciona el comportament bàsic per als tres recorreguts preordre, inordre i postordre. En aquesta classe es defineix el comportament comú a tots tres recorreguts, de manera que posteriorment únicament caldrà redefinir, per a cada recorregut concret, el mètode següent.

See Also:
Recorregut.hiHaSeguent(), Recorregut.seguent(), Serialized Form

Field Summary
protected  Arbre<E> arbre
          L'arbre que s'està recorrent.
protected  Pila<Posicio<E>> pila
          Pila auxiliar.
 
Constructor Summary
ArbreAbstracte.RecorregutOrdreBasic(Arbre<E> arbre)
          Constructor.
 
Method Summary
protected abstract  void empilaDescendentsAmbMenysPrioritat(Posicio<E> pare)
          Aquest mètode empila els descendents d'un node que han d'aparèixer després que ell en el recorregut de l'arbre.
protected abstract  void empilaDescendentsAmbMesPrioritat(Posicio<E> pare)
          Aquest mètode empila els descendents d'un node que han d'aparèixer abans que ell en el recorregut de l'arbre.
protected  void empilaFills(Posicio<E> pare)
          Aquest mètode empila els fills d'un node en l'ordre en el que estan definits.
 boolean hiHaSeguent()
          Comprova si hi ha una primera o següent posició.
 Posicio<E> seguent()
          Primer avança, si es pot, i després retorna la posició.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

arbre

protected Arbre<E> arbre
L'arbre que s'està recorrent.


pila

protected Pila<Posicio<E>> pila
Pila auxiliar. Aquesta pila amagatzema els elements que hem tractat però que encara no hem recorregut. El cim de la pila sempre ha de tenir el següent element a recórrer. Tots tres recorreguts pre/in/post-ordre es poden veure de la següent manera: donat un node, aquest té un conjunt de descendents que apareixeran abans que ell en el recorregut (són més prioritaris) i un conjunt de descendents que apareixeran després d'ell en el recorregut (són menys prioritaris).

Constructor Detail

ArbreAbstracte.RecorregutOrdreBasic

public ArbreAbstracte.RecorregutOrdreBasic(Arbre<E> arbre)
Constructor.

Parameters:
arbre - L'arbre a recórrer.
Method Detail

empilaDescendentsAmbMesPrioritat

protected abstract void empilaDescendentsAmbMesPrioritat(Posicio<E> pare)
Aquest mètode empila els descendents d'un node que han d'aparèixer abans que ell en el recorregut de l'arbre. Aquesta característica diferència els tres recorreguts preordre, inordre i postordre. Per tant, el mètode és definit en aquesta classe com a abstracte i ha de ser redefinit en les classes derivades de la manera pertinent. La resta de mètodes que implementen el recorregut es poden definir en aquesta mateixa classe en base a aquest mètode abstracte.


empilaDescendentsAmbMenysPrioritat

protected abstract void empilaDescendentsAmbMenysPrioritat(Posicio<E> pare)
Aquest mètode empila els descendents d'un node que han d'aparèixer després que ell en el recorregut de l'arbre. Aquesta característica és l'altre característica que diferència els tres recorreguts preordre, inordre i postordre. Per tant, el mètode és definit en aquesta classe com a abstracte i ha de ser redefinit en les classes derivades de la manera pertinent. La resta de mètodes que implementen el recorregut es poden definir en aquesta mateixa classe en base a aquest mètode abstracte.


empilaFills

protected void empilaFills(Posicio<E> pare)
Aquest mètode empila els fills d'un node en l'ordre en el que estan definits.

Parameters:
pare -

hiHaSeguent

public boolean hiHaSeguent()
Comprova si hi ha una primera o següent posició. És sensible a eventuals alteracions de l'estructura de posicions. Retorna fals si el contenidor està buit o ja s'ha visitat l'última posició.

Specified by:
hiHaSeguent in interface Recorregut<E>
Returns:
cert o fals, segons si es pot avançar o no es pot

seguent

public Posicio<E> seguent()
Primer avança, si es pot, i després retorna la posició. Si no hi ha següent posició llança una excepció.

Specified by:
seguent in interface Recorregut<E>
Returns:
següent posició