Buonasera dovrei realizzare la cancellazione di un nodo il un albero binario ho tale stuttura dell'albero
struct TTree {
int key;
struct TTree* sx;
struct TTree* dx;
};
prima di cancellare il nodo ho vari casi:
1) Albero vuoto: non viene realizzata alcuna cancellazione;
2) L’elemento el < radice albero: la cancellazione va effettuata nel sottoalbero sinistro; elimina(radice->sinistro,el);
3) L’elemento el > radice albero: la cancellazione va effettuata nel sottoalbero destro; elimina(radice->destro,el);
4) L’elemento el==radice albero. Si considerano i seguenti casi:
5) La radice è una foglia.
6) Il nodo ha un sottoalbero non vuoto e l’altro vuoto.
7) Il nodo ha entrambi i sottoalberi non vuoti.
i primi quattro casi ho risolto in questo modo:
void * canc(Tree *T, int valore)
{
if(T == NULL) //caso 1
return T;
if(valore < T->key) //caso 2
return canc(T->sx,valore);
else if(valore > T->key) //caso 3
return canc(T->dx,valore);
else if(valore == T->key) //caso 4
}
}
per gli altri casi potete aiutarmi a realizzarli?