diff --git a/Alberi1/.gitignore b/Alberi1/.gitignore new file mode 100644 index 0000000..13275f1 --- /dev/null +++ b/Alberi1/.gitignore @@ -0,0 +1,30 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ +.kotlin + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/Alberi1/.idea/.gitignore b/Alberi1/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/Alberi1/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Alberi1/.idea/misc.xml b/Alberi1/.idea/misc.xml new file mode 100644 index 0000000..07115cd --- /dev/null +++ b/Alberi1/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Alberi1/.idea/modules.xml b/Alberi1/.idea/modules.xml new file mode 100644 index 0000000..520e7b8 --- /dev/null +++ b/Alberi1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Alberi1/.idea/vcs.xml b/Alberi1/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/Alberi1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Alberi1/Alberi1.iml b/Alberi1/Alberi1.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/Alberi1/Alberi1.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Alberi1/src/NodoMain.java b/Alberi1/src/NodoMain.java new file mode 100644 index 0000000..631bd37 --- /dev/null +++ b/Alberi1/src/NodoMain.java @@ -0,0 +1,84 @@ +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); + } +} + + + +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)); + } + +} \ No newline at end of file