Laboratorio 2 (Java 1) - Albero binario

 

Scaricare il file labJava1_06.zip , scompattarlo nella propria directory di lavoro. Il file .zip contiene le interfacce di Position<E>, Tree<E>, BinaryTree<E> e il file TestLinkedBinaryTree.java in cui inserire il codice richiesto negli esercizi di seguito riportati. Sono, inoltre, forniti tutti i file .class  necessari all'esecuzione dell'esercitazione.

Come esercitazione:

  1. Trovare la Position<E>  r della radice dell'albero e stampare il valore associato a tale posizione.

  2. Inserire un ciclo che a partire dalla posizione della radice dell'albero determini la posizione x del nodo interno più a sinistra e ne stampi il contenuto.

  3. Determinare la posizione z dello zio di x e stamparne il contenuto .

  4. Scrivere un metodo statico con signature :
     public static <E> Position<E> leftMost( BinaryTree<E> T, Position<E> p ) { /*. . .*/ }
    che determina la posizione del nodo interno più a sinistra del sottoalbero di T con radice p. Verificare il corretto funzionamento del metodo applicandolo ai nodi r, z, x.

  5. Scrive un metodo public static <E> int depth(BinaryTree<E> T, Position<E> p) { /*. . .*/ } che determina la profondità del nodo p di T.

  6. Scrive un metodo public static <E> int height(BinaryTree<E> T, Position<E> p) { /*. . .*/ }che determina la altezza del sottoalbero con radice in p di T.
     

  7. Scrivere un metodo statico  public static <E> Position<E> search( BinaryTree<E> T, Position<E> p, Integer n ) { /*. . .*/ } che ritorna la posizione del nodo (nel sottoalbero p di T) che contiene il valore n, se esiste, altrimenti ritorna null.
     

Nel file TestLinkedBinaryTree.java  viene creato l'albero riportato nella figura sottostante,  da usare per la verifica del corretto funzionamento del codice.