Ho questo esercizio:
codice:Si realizzi un'implementazione delle due interfacce TNode<E> e Tree<E> mostrate nella pagina seguente. Le implementazioni fornite, che dovranno essere denominate rispettivamente ArrayTNode<E> e ArrayTree<E>, dovranno utilizzare un array per la memorizzazione dei nodi dell'albero. I singoli nodi dovranno quindi risiedere all'interno di un array mentre i puntatori ai nodi firstSon, sibling e parent dovranno essere espressi attraverso indici dell'array. In seguito si realizzi un programma Java che preso in input un file contenente una lista di nomi (composti da nome e cognome) costruisca un albero completo (ArrayTree<String>) dove ogni nodo possiede esattamente 3 figli. Gli elementi verranno forniti in modo da costruire l'albero procedendo per livelli (dalla radice alle foglie), e costruendo ciascun livello da sinistra verso destra. Il programma dovrą stampare in un file di output la visita preorder dell'albero ottenuto, utilizzando il metodo toString() della classe ArrayTree. Input Il file di input contiene una lista di stringhe, una per riga, ciascuna contenente un nome seguito da un cognome e separati da uno spazio. Output Il file di output dovrą contenere una lista di stringhe, una per riga, risultanti dalla visita preorder dell'albero ottenuto.
Ora ho un paio di perplessitą sul metodo addChild della classe Nodo.codice:public interface TNode<E> { public E element(String nome); // ritorna il valore dell'elemento contenuto nel nodo public int sibling(); // ritorna l'indice nell'array del successivo fratello public int firstSon(); // ritorna l'indice nell'array del primo figlio public int addChild(); // inserisce un nuovo figlio in coda alla lista dei figli public int parent(); // ritorna l'indice nell'array del nodo padre public int degree(); // ritorna il numero di figli del nodo public void setElement(E element); // setta il valore dell'elemento contenuto nel nodo } public interface Tree<E> { public int size(); // ritorna il numero di nodi presenti nell'albero public TNode<E> root(); // ritorna il nodo radice dell'albero public String toString(); // stampa l'albero, un elemento per riga, utilizzando una visita poreorder public TNode<E> search(E val); // ritorna il nodo che contiene il valore val, null altrimenti public E minimum(); // ritorna il valore minore presente nell'albero }
Quel metodo non dovrebbe essere nell'interfaccia Tree?
D'altra parte se devo lavorare con un array, come faccio all'interno della classe nodo ad inserire un nuovo filgio se il metodo non prende nemmeno parametri?
Restituisce un int, immagino quello che indica la locazione dell'array in cui inserire il figlio, ma se ancora l'array non ce l'ho, e lo creerņ nella classe che implementa Tree, come faccio a parlare di array e di indice in quel metodo se non esistono array?

Rispondi quotando