Pages: [1]   Go Down
Print
Author Topic: Delete() albero binario  (Read 1704 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« on: 14-07-2010, 10:15:16 »

Ciao ragazzi, ma qualcuno ha per caso provato ad implementare la delete(TNode n) in un albero binario?? ho scritto il codice fatto a lezione ma c'è qualcosa che nn va...magari ho sbagliato qualche appunto
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #1 on: 14-07-2010, 10:36:33 »

E' abbastanza semplice, leggilo e implementalo da qui xD

http://en.wikipedia.org/wiki/Binary_search_tree#Deletion
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
207
Matricola
*
Offline Offline

Posts: 95


« Reply #2 on: 15-07-2010, 17:27:33 »

Ciao ragazzi, qualcuno gentilmente potrebbe postare la procedura delete() fatta a lezione? grazie...
Logged
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« Reply #3 on: 17-07-2010, 12:18:30 »

Questo è il mio delete:
Code:
public void delete(SetNode<E> x){
if(x==null) return;
SetNode<E> z=x.parent();
if(x.sonLeft()==null && x.sonRight()==null){ //caso foglia
if (z==null) root=null;
if(x==z.sonLeft()) z.setSonLeft(null);
else z.setRight(null);
x.setParent(null);
size--;
return;
}
if(x.sonLeft()!=null && x.sonRight()==null){ //ha solo figlio sx
if(z==null){ root=x.sonLeft();
root.setParent(null);}
else{x.sonLeft().setParent(z);
if(x==z.sonLeft()) z.setSonLeft(x.sonLeft());
}
size--;
return;
}
if(x.sonRight()!=null && (x.sonLeft()==null)){ //ha solo figlio sx
if(z==null){ root=x.sonRight();
root.setParent(null);}
else{ x.sonRight().setParent(z);
if(x==z.sonRight()) z.setRight(x.sonRight());}

size--;
return;
}
if(x.sonLeft()!=null && x.sonRight()!=null){ //è un nodo interno
SetNode<E> v=next(x);
x.setSet(v.set());
delete(v);
return;
}
}
il next restituisce l'elemento più piccolo del sottoalbero destro
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
ottobit
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 186


!nope!


« Reply #4 on: 23-07-2010, 17:38:54 »

Code:

SetNode<E> v=next(x);
x.setSet(v.set());
delete(v);
return;


Scusami,il metodo x.setSet(v.set()) cosa fa esattamente?

Grazie.
Logged
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« Reply #5 on: 25-07-2010, 08:38:29 »

il metodo ricopia l'etichetta dei nodi, in altre parole copia quella di v nel nodo x così da salvarla e sovrascrivere quella di x che è appunto il nodo da cancellare
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #6 on: 25-07-2010, 09:14:16 »

POtresti postare il tuo metodo setSet()...giusto per capire cosa fa.perchè non l' ho capito neanche io.
Logged
aryanna
Apprendista Forumista
**
Offline Offline

Posts: 110



« Reply #7 on: 25-07-2010, 10:09:02 »

Code:
public void setSet(E l){
this.set=l;
}
è semplicemente un set element o label niente di più Smiley solo che ha questo nome xk l'avevo preso da un esercizio specifico e mi veniva più comodo chiamarlo così
Logged

Rappresentante studenti Corso di Laurea in Informatica - arianna317@gmail.com

write once, run everywhere..
bluegirl
Apprendista Forumista
**
Offline Offline

Posts: 360



« Reply #8 on: 25-07-2010, 10:32:30 »

ah ok 
Logged
Pages: [1]   Go Up
Print
Jump to: