// Programma che implementa un'albero binario class nodo { nodo sinistro = null; // Sottoalbero di sinistra (del nodo) double chiave; // Chiave >8)= int valore; // Valore >8)= nodo destro = null; // Sottoalbero di destra (del nodo) static nodo albero = null; // Albero (della classe) nodo (double ch, int val) { // Costruttore con parametri chiave = ch; // Inizializza i dati del nodo con i parametri valore = val; } void inserisci (nodo nuovo) { // Funzione ricorsiva di inserimento if (nuovo.chiave < chiave) { // Confronta il nodo da inserire con 'me', che sono la radice del sottoalbero if (sinistro != null) // Se esiste la radice del sottoalbero sinistro.inserisci (nuovo); // Inserisco nel sottoalbero else sinistro = nuovo; // Altrimenti il nuovo nodo e' la radice del sottoalebero } else { if (destro != null) // Se esiste la radice del sottoalbero destro.inserisci (nuovo); // Inserisco nel sottoalbero else destro = nuovo; // Altrimenti il nuovo nodo e' la radice del sottoalebero } } void traversa () { // Funzione ricorsiva che traversa l'albero if (sinistro != null) // Se esiste il sottoalbero di sinistra (la sua radice) sinistro.traversa (); // Visito prima il sottoalbero System.out.print (chiave); // Stampo i valori del nodo corrente System.out.print (" -> "); System.out.println (valore); if (destro != null) // Se esiste il sottoalbero si destra destro.traversa (); // Adesso visito anche quello } static void nuovo (double ch, int val) { // Funzione statica che crea un nuovo nodo nodo n = new nodo (ch,val); // Alloca un nuovo nodo if (albero == null) // Se non esiste la radice dell'albero albero = n; // Allora il nuovo nodo diventera' la radice else albero.inserisci (n); // Altrimenti ordina alla radice di inserire } public static void main (String [] args) { // Programma principale int i; for (i = 0; i < 20; i++) // 20 ripetizioni nuovo (java.lang.Math.random(),i); // Crea 20 nodo, chiave casuale ecc. albero.traversa (); // Traversa l'albero, dalla radice albero = null; // Dereferenzia la radice, per elimenare l'albero } }