class Nodo{ int dato; Nodo left, right; public Nodo(int dato, Nodo left, Nodo right) { this.dato = dato; this.left = left; this.right = right; } static void stampa(Nodo n, int livello, String lr) { if(n==null) return; for(int i=0;i"); System.out.println(n.dato+lr); stampa(n.left, livello+1,"L"); stampa(n.right, livello+1,"R"); } /* 0) fissate l'intestazione della funzione e pensate che esista già e che funzioni 1) caso base, trovare un caso in cui la risposta è ovvia e non serve computazione 2) cosa fare col dato attuale e cosa fare con i rimanenti */ static int somma(Nodo albero) { if(albero==null) return 0; return albero.dato+somma(albero.left)+somma(albero.right); } static int conta(Nodo albero) {//conta quanti sono i nodi if(albero==null) return 0; return 1+conta(albero.left)+conta(albero.right); } static int contaFoglie(Nodo albero) {//conta quanti sono le foglie (nodi senza figli) if(albero==null) return 0; if (albero.left == null && albero.right == null) { return 1; } else { return contaFoglie(albero.left) + contaFoglie(albero.right); } } static Nodo insOrd(int val, Nodo albero) { if(albero==null) return new Nodo(val, null, null); if(val>albero.dato) return new Nodo(albero.dato, albero.left, insOrd(val, albero.right)); return new Nodo(albero.dato, insOrd(val, albero.left), albero.right); } static boolean trova(Nodo albero, int valore) { if(albero==null) return false; else if(albero.dato==valore) return true; else return trova(albero.left, valore) || trova(albero.right, valore); } static String valoriNelLivello(Nodo albero, int livello){ if(albero==null) return ""; else if(livello==0) return albero.dato + ""; else return valoriNelLivello(albero.left, livello-1) + valoriNelLivello(albero.right, livello-1); } } public class NodoMain { public static void main(String[] args) { Nodo n1 = new Nodo(10, null, null); Nodo n2 = new Nodo(5, null, null); Nodo n3 = new Nodo(30, null, null); n1.left = n2; n1.right = n3; // Nodo.stampa(n1,0); Nodo n4 = Nodo.insOrd(23, n1); n4 = Nodo.insOrd(1, n4); Nodo.stampa(n4,0,""); System.out.println("Nodi: " + Nodo.conta(n4)); System.out.println("Foglie: " + Nodo.contaFoglie(n4)); System.out.println("Somma: " + Nodo.somma(n4)); System.out.println("Trovato 24? " + Nodo.trova(n4,24)); } }