Vi posto una mia soluzione la cancellazione di un nodo su un albero BST, siccome in qualche caso non lavoro chiedo a qualche esperto se mi può aiutare a modificare/cambiare radicalmente questa cancellazione.
lo struct dell'albero è banalecodice:void remove_1(node*& z,const int val){ node* f; if( z == NULL )// fallisce la ricerca cout << val << " non è presente nell'albero.\n"; else if( val < z->item) remove_1(z->sx, val ); else if( val > z->item) remove_1(z->dx, val ); //sicuri che si arriva a valore che si vuole cancellare else { node* to_be_deleted = z; if(z->sx==NULL) z=z->dx; else if( z->dx==NULL) z=z->sx; else { to_be_deleted=successor(z); f=father(to_be_deleted); z->item=to_be_deleted->item; z->sx=to_be_deleted->sx; z->dx=to_be_deleted->dx; if(f->dx==to_be_deleted)f->dx=NULL; else f->sx=NULL; } delete to_be_deleted; } return; }
Spero mi possiate autare!! Grazie in anticipo...codice:struct node{ int item; node* sx; node* dx; node (int e){item=e;dx=sx=0;} };
![]()

Rispondi quotando
VVoVe:
