Alberi binari di ricerca

di il
7 risposte

Alberi binari di ricerca

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?

7 Risposte

  • Re: Alberi binari di ricerca

    Chiedi "quando" succedono i vari casi che non hai risolto ...
  • Re: Alberi binari di ricerca

    oregon ha scritto:


    Chiedi "quando" succedono i vari casi che non hai risolto ...
    si in modo ricorsivo
  • Re: Alberi binari di ricerca

    No ... la mia era una domanda ....

    "Chiediti" quando capita quello che hai descritto. Ad esempio,

    quando

    la radice è una foglia?
  • Re: Alberi binari di ricerca

    oregon ha scritto:


    No ... la mia era una domanda ....

    "Chiediti" quando capita quello che hai descritto. Ad esempio,

    quando

    la radice è una foglia?
    quando non ha figli
  • Re: Alberi binari di ricerca

    Quindi?
  • Re: Alberi binari di ricerca

    oregon ha scritto:


    Quindi?
    faccio una free di T e poi pongo T a null
  • Re: Alberi binari di ricerca

    Ma che dici?
Devi accedere o registrarti per scrivere nel forum
7 risposte