ciao
ho il seguente programma , il quale riporta i metodi di inserimento cancellazione e ricerca di un nodo ....
me lo potete spiegare mettendo magari dei commenti ai vari metodi , spiegandomi per bene come agiscono?
grazie
ho il seguente programma , il quale riporta i metodi di inserimento cancellazione e ricerca di un nodo ....
me lo potete spiegare mettendo magari dei commenti ai vari metodi , spiegandomi per bene come agiscono?
grazie
Codice:
import java.io.*;
import java.util.Scanner;
class Nodo
{
int value;
Nodo left;
Nodo right;
boolean eliminato;
public Nodo(int value)
{
this.value=value;
left=null;
right=null;
eliminato=false;
}
}
class AlberoBinario{
Nodo root;
public AlberoBinario()
{
root= null;
}
public void inserisciValore(Nodo nuovo)
{
if(root== null)
{
root=nuovo;
}else
inserisciValore(nuovo,root);
}
void inserisciValore(Nodo nuovo,Nodo n)
{
if(nuovo.value==n.value)
{
n.eliminato=false;
}else if(nuovo.value<n.value)
{
if(n.left==null)
{
n.left=nuovo;
}else
{
inserisciValore(nuovo,n.left);
}
}
else{
if(n.right==null)
{
n.right=nuovo;
}else
{
inserisciValore(nuovo,n.right);
}
}
}
public void elimina(int el)
{
elimina(el,root);
}
void elimina(int el,Nodo n)
{
if(n !=null)
{
if(el==n.value)
{
n.eliminato=true;
System.out.println("valore eliminato");
}else
if(el<n.value)
elimina(el,n.left);
else
elimina(el,n.right);
}
else
System.out.println ("valore non trovato");
}
Nodo ricerca(int cerca){
return ricerca(cerca, root);
}
Nodo ricerca(int cerca, Nodo n){
if(n!=null)
if(cerca==n.value)
if(n.eliminato)
return null;
else
return n;
else if(cerca<n.value)
return ricerca(cerca, n.left);
else
return ricerca(cerca, n.right);
else
return null;
}
}
class Main
{
public static void main(String[]args)
{
Alberoiterativo ai= new Alberoiterativo();
ai.Alberoiterativo();
}
}
public class Alberoiterativo {
AlberoBinario a;
Scanner t = new Scanner(System.in);
void Alberoiterativo()
{
a=new AlberoBinario();
int scelta;
while (true) {
System.out.println("1. Inserisci elemento");
System.out.println("2. Ricerca elemento");
System.out.println("3. Elimina elemento.");
System.out.println("4. Esci");
System.out.println();
System.out.print("Selezionare un'operazione da eseguire: ");
scelta = t.nextInt();
System.out.println();
switch (scelta) {
case 1:
aggiunta();
break;
case 2:
contiene();
break;
case 3:
eliminazione();
break;
case 4:
System.exit(1);
break;
}
}
}
public void aggiunta()
{
Nodo n;
int id;
System.out.print("inserisci valore: ");
id=t.nextInt();
n=new Nodo(id);
a.inserisciValore(n);
}
public void eliminazione()
{
int id;
System.out.print("inserisci il valore da eliminare: ");
id=t.nextInt();
a.elimina(id);
}
public void contiene()
{
int id;
System.out.print("inserisci il valore da ricercare: ");
id=t.nextInt();
if(a.ricerca(id)==null)
System.out.println("valore non trovato");
else
System.out.println("valore trovato");
}
}