uoc.ei.tads
Class ArbreBinari.RecorregutPostordre<E>
java.lang.Object
uoc.ei.tads.ArbreBinari.RecorregutOrdreBasic<E>
uoc.ei.tads.ArbreBinari.RecorregutInordre<E>
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
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ArbreBinari.RecorregutPostordre
public ArbreBinari.RecorregutPostordre(ArbreBinari<E> arbre)
- Constructor.
- Parameters:
arbre
- L'arbre a recórrer.
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)