uoc.ei.tads
Class ArbreGeneralDelegImpl<E>

java.lang.Object
  extended by uoc.ei.tads.ArbreAbstracte<E>
      extended by uoc.ei.tads.ArbreGeneralDelegImpl<E>
All Implemented Interfaces:
java.io.Serializable, Arbre<E>, Contenidor<E>

public class ArbreGeneralDelegImpl<E>
extends ArbreAbstracte<E>

Els arbres són estructures que relacionen els seus elements, anomenats nodes, formant jerarquies: tot node (tret de l'arrel que es el cap de la jerarquia) és descendent d'un node únic, i pot ser ascendent d'altres nodes (quan no té descendents s'anomena fulla). Quan un node pot tenir un nombre indeterminat de fills parlem d'arbres generals (general tree) i, si en té un nombre fix N, d'arbres d'ordre N (n-ary tree); en aquests últims destaca el cas de N = 2, els anomenats arbres binaris (binary tree).

Since:
1.5
See Also:
Serialized Form

Nested Class Summary
protected static class ArbreGeneralDelegImpl.RecorregutFills<E>
          Classe que proporciona un recorregut de les posicions.
 
Nested classes/interfaces inherited from class uoc.ei.tads.ArbreAbstracte
ArbreAbstracte.RecorregutOrdreBasic<E>, ArbreAbstracte.RecorregutPerNivells<E>, ArbreAbstracte.RecorregutPostordre<E>, ArbreAbstracte.RecorregutPreordre<E>
 
Field Summary
protected  ArbreBinariEncadenatImpl<E> ab
          Arbre binari que implementa les operacions per delegació.
 
Constructor Summary
ArbreGeneralDelegImpl()
           
 
Method Summary
 Posicio<E> afegir(Posicio<E> pare, E elem)
          Afegeix un element com a nou fill de la posició rebuda, si es pot.
 Posicio<E> arrel()
          Accessor de lectura de l'arrel de l'arbre, si n'hi ha.
protected  ArbreBinariEncadenatImpl<E> creaArbreRepresentacio()
           
 void esborrar(Posicio<E> pare, Posicio<E> fill)
          Esborra el subarbre representat per la posició fill, si es pot.
 Recorregut<E> fills(Posicio<E> pare)
          Mètode que soporta múltiples recorreguts, de les posicions filles de la posició de referència, simultanis i independents entre ells.
 void intercanviar(Posicio<E> pos1, Posicio<E> pos2)
          Intercanvia els elements continguts a les posicions rebudes.
 int nombreElems()
          Accessor de lectura del nombre d'elements que hi ha al contenidor.
 E reemplacar(Posicio<E> pos, E elem)
          Reemplaça l'element contingut a la posició rebuda.
 
Methods inherited from class uoc.ei.tads.ArbreAbstracte
elements, esFulla, estaBuit, nombreElems, nombreFills, posicions, recorregutPerNivells, recorregutPostordre, recorregutPreordre, toString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ab

protected ArbreBinariEncadenatImpl<E> ab
Arbre binari que implementa les operacions per delegació.

Constructor Detail

ArbreGeneralDelegImpl

public ArbreGeneralDelegImpl()
Method Detail

creaArbreRepresentacio

protected ArbreBinariEncadenatImpl<E> creaArbreRepresentacio()

nombreElems

public int nombreElems()
Accessor de lectura del nombre d'elements que hi ha al contenidor.

Returns:
nombre d'elements que conté actualment

arrel

public Posicio<E> arrel()
Accessor de lectura de l'arrel de l'arbre, si n'hi ha.

Returns:
arrel de l'arbre

fills

public Recorregut<E> fills(Posicio<E> pare)
Mètode que soporta múltiples recorreguts, de les posicions filles de la posició de referència, simultanis i independents entre ells.

Parameters:
pare - posició de referència
Returns:
enumeració de les posicions filles
Throws:
ExcepcioPosicioInvalida - si la posició és null o no vàlida

afegir

public Posicio<E> afegir(Posicio<E> pare,
                         E elem)
Afegeix un element com a nou fill de la posició rebuda, si es pot. Si el pare és null, s'afegeix a l'arrel; si és una fulla, s'afegeix com a primer fill (fill més a l'esquerra); altrament, s'afegeix a la primera posició lliure (d'esquerra a dreta).

Parameters:
pare - posició de referència
elem - element que es vol afegir a l'arbre
Returns:
nou fill; o l'arrel, si el pare era null

reemplacar

public E reemplacar(Posicio<E> pos,
                    E elem)
Reemplaça l'element contingut a la posició rebuda.

Parameters:
elem - nou element
pos - posició de referència
Returns:
element que hi havia a la posició

intercanviar

public void intercanviar(Posicio<E> pos1,
                         Posicio<E> pos2)
Intercanvia els elements continguts a les posicions rebudes. Les posicions no són intercanviades.

Parameters:
pos1 - primera de les dues posicions de referència
pos2 - segona de les dues posicions de referència

esborrar

public void esborrar(Posicio<E> pare,
                     Posicio<E> fill)
              throws ExcepcioPosicioInvalida
Esborra el subarbre representat per la posició fill, si es pot. Si la posició del pare és null, esborra l'arbre sencer.

Parameters:
pare - posició del pare; pot ser null
fill - posició del fill
Throws:
ExcepcioPosicioInvalida - si alguna posició és no vàlida