Praticamente c'è la classe TreeNode che memorizza al suo interno l'elemento del nodo, il nodo padre e i figli con una lista linkata. Questa la sua interfaccia:
codice:
public void setElement(E o);
public PositionList<Position<E>> getChildren();
public void setChildren( PositionList<Position<E>> c );
public TreePosition<E> getParent();
public void setParent(TreePosition<E> v);
Poi c'è la classe LinkedList e questa è la sua interfaccia:
codice:
/** Restituisce il numero di nodi dell'albero. */
public int size();
/** Restituisce un valore che specifica se l'albero è vuoto. */
public boolean isEmpty();
/** Restituisce una lista iterabile dei nodi memorizzati nell'albero. */
public Iterable<Position<E>> positions();
/** Sostituisce l'elemento memorizzato nel nodo v con e. */
public E replace(Position<E> v, E e) throws InvalidPositionException;
/** Restituisce la radice dell'albero. */
public Position<E> root() throws EmptyTreeException;
/** Restituisce il padre di u n determinato nodo. */
public Position<E> parent(Position<E> v) throws InvalidPositionException, BoundaryViolationException;
/** Restituisce una lista iterabile dei figli di un nodo. */
public Iterable<Position<E>> children(Position<E> v) throws InvalidPositionException;
/** Restituisce u n valore che specifica se u n dato nodo è interno. */
public boolean isInternal(Position<E> v) throws InvalidPositionException;
/** Restituisce un valore che specifica se u n dato nodo è esterno. */
public boolean isExternal(Position<E> v) throws InvalidPositionException;
/** Restituisce un valore che specifica se u n dato nodo è la radice dell'albero. */
public boolean isRoot(Position<E> v) throws InvalidPositionException;