Salve,sto cercando di implementare un albero binario di ricerca qualcuno mi può aiutare ad implementare il metodo di rimozione di un nodo ,gentilmente ,mi perdo quando il nodo da eliminare non è una foglia?
codice:public class NodoBin { private int dato; private NodoBin figlioSx; private NodoBin figlioDx; NodoBin(int d) { figlioDx=null; figlioSx=null; dato=d; } public void inserimNodoInterno(int val){ if(val<=dato){ if(figlioSx!=null) figlioSx.inserimNodoInterno(val); else figlioSx = new NodoBin(val); } else{ if(figlioDx!=null) figlioDx.inserimNodoInterno(val); else figlioDx = new NodoBin(val); } } public int getDato() { return dato; } public NodoBin getFiglioDx() { return figlioDx; } public NodoBin getFiglioSx() { return figlioSx; } } public class AlberoBin { private NodoBin radice; private LinkedList<NodoBin> visitatiPILA; //per DFS o visita in profondita private LinkedList<NodoBin> visitatiCODA;//per BFS o visita in ampiezza public AlberoBin() { radice=null; visitatiPILA=new LinkedList<NodoBin>(); } public NodoBin getRadice() { return radice; } public boolean alberoVuoto(){ if(radice ==null)return true; return false; } public void insNodo(int v){ if( alberoVuoto() ) radice = new NodoBin(v); else radice.inserimNodoInterno(v); } public void stampaNodi(){ if( alberoVuoto() ) return ; stampa(radice); } //VISITA IN PROFONDITA public void visitaIterativaDFS(){ visitatiPILA.add(radice); while(! visitatiPILA.isEmpty()){ NodoBin nodoPrelevato= visitatiPILA.pop(); if(nodoPrelevato!= null) System.out.println( "valutazione del nodo"+ nodoPrelevato.getDato() ); if(nodoPrelevato.getFiglioSx()!=null) visitatiPILA.push(nodoPrelevato.getFiglioSx()); if(nodoPrelevato.getFiglioDx()!=null) visitatiPILA.push(nodoPrelevato.getFiglioDx()); } } public void visitaIterativaBFS(){ visitatiCODA.add(radice); while(!visitatiCODA.isEmpty()){ NodoBin prelevato= visitatiCODA.pop(); if(prelevato!= null) System.out.println(prelevato.getDato()); if(prelevato.getFiglioSx()!=null) visitatiCODA.add(prelevato.getFiglioSx()); if(prelevato.getFiglioDx()!=null) visitatiCODA.add(prelevato.getFiglioDx()); } } public void eliminaNodi( ){ } public void stampa(NodoBin n){ if(n== null) return ; stampa(n.getFiglioSx()); stampa(n.getFiglioDx()); } public class AvviaAlbero { public static void main(String[] args) { AlberoBin A1 =new AlberoBin(); A1.insNodo(1); A1.insNodo(2); A1.insNodo(1); A1.insNodo(1); A1.insNodo(3); A1.insNodo(4); A1.stampaNodi(); A1.visitaIterativaDFS(); } }

?
Rispondi quotando