uoc.ei.tads
Class ArbreBinari.RecorregutPostordre<E>

java.lang.Object
  extended by uoc.ei.tads.ArbreBinari.RecorregutOrdreBasic<E>
      extended by uoc.ei.tads.ArbreBinari.RecorregutInordre<E>
          extended by uoc.ei.tads.ArbreBinari.RecorregutPostordre<E>
All Implemented Interfaces:
java.io.Serializable, Recorregut<E>
Enclosing class:
ArbreBinari<E>

protected static class ArbreBinari.RecorregutPostordre<E>
extends ArbreBinari.RecorregutInordre<E>

Classe que proporciona un recorregut de les posicions. Basada en el pattern Iterator, soporta múltiples recorreguts simultanis i independents del contenidor. És sensible a eventuals alteracions de l'estructura de posicions.

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

Field Summary
 
Fields inherited from class uoc.ei.tads.ArbreBinari.RecorregutOrdreBasic
arbre, pila
 
Constructor Summary
ArbreBinari.RecorregutPostordre(ArbreBinari<E> arbre)
          Constructor.
 
Method Summary
protected  void empilaDescendentsAmbMenysPrioritat(Posicio<E> pare)
          Els descendents amb menys prioritat per al cas del recorregut inordre són el fill dret i els seus descendents.
protected  void empilaDescendentsAmbMesPrioritat(Posicio<E> pare)
          Redefinició d'aquest mètode per a tenir en compte els descendents amb menys prioritat del darrer node de la branca esquerra.
protected  boolean jaDesplegatTotalment(Posicio<E> node)
           
 Posicio<E> seguent()
          Aquesta classe reaprofita les prioritats establertes pel recorregut inordre i modifica el mètode seguent.
 
Methods inherited from class uoc.ei.tads.ArbreBinari.RecorregutOrdreBasic
hiHaSeguent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArbreBinari.RecorregutPostordre

public ArbreBinari.RecorregutPostordre(ArbreBinari<E> arbre)
Constructor.

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

empilaDescendentsAmbMesPrioritat

protected void empilaDescendentsAmbMesPrioritat(Posicio<E> pare)
Redefinició d'aquest mètode per a tenir en compte els descendents amb menys prioritat del darrer node de la branca esquerra.

Overrides:
empilaDescendentsAmbMesPrioritat in class ArbreBinari.RecorregutInordre<E>

empilaDescendentsAmbMenysPrioritat

protected void empilaDescendentsAmbMenysPrioritat(Posicio<E> pare)
Els descendents amb menys prioritat per al cas del recorregut inordre són el fill dret i els seus descendents. Per tant, empilem el fill dret. Acte seguit passem a empilar els descendents del fill dret que tenen més prioritat que aquest.

Overrides:
empilaDescendentsAmbMenysPrioritat in class ArbreBinari.RecorregutInordre<E>

seguent

public Posicio<E> seguent()
Aquesta classe reaprofita les prioritats establertes pel recorregut inordre i modifica el mètode seguent. La modificació consisteix en empilar els elements amb menys prioritat del node que queda al cim de la pila després de desempilar l'actual. És a dir, el que estem fent és canviar el significat dels mètodes empilaDescendentsAmbMes/MenysPrioritat per a reaprofitar el màxim codi possible. En aquesta classe tots els descendents d'un node tenen més prioritat que aquest. Llavors dividim els seus descendents en dos grups: els que tenen més prioritat (fill esquerre i descendents) i els que en tenen menys (fill dret i descendents). Si vulguessim respectar l'estructura definida a la classe base acabaríem tenint una pila que inicialment tindria tots els nodes de l'arbre.

Specified by:
seguent in interface Recorregut<E>
Overrides:
seguent in class ArbreBinari.RecorregutOrdreBasic<E>
Returns:
següent posició

jaDesplegatTotalment

protected boolean jaDesplegatTotalment(Posicio<E> node)