Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoEdoardo Pappalardo Modificato 6 anni fa
1
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
Chiara Petrioli
2
Si scriva una procedura Essere ‘giallo-verde’
Esercizio 8 /*Verifica se un albero e’ giallo verde. Per essere gialloverde ogni nodo giallo deve avere figli Verdi. Un nodo giallo ha il campo elem a 1 , un nodo Verde il campo elem a 0.*/ int gialloverde (ALBERO T) { int gv=1; if(T==NULL) return 1; else { if (T->elem==0) return (gialloverde(T->left)&&(gialloverde(T->right))); if (T->left!=NULL) gv=(T->left->elem==0); if(T->right!=NULL) gv=gv&&(T->right->elem==0); return(gv&&gialloverde(T->left)&&gialloverde(T->right))); } Si scriva una procedura Che dato un Albero binario Verifica se ha La proprieta’ di Essere ‘giallo-verde’ Qui farli ragionare un attimo sull’aritmetica dei puntatori
3
Si scriva una procedura
Esercizio 9 /*calcola e memorizza nella locazione di memoria puntata da order l’iesimo order statistic ovvero l’i-esimo elemento piu’ piccolo in un albero binario di ricerca. L’indice dell’elemento piu’ piccolo da cercare e’inizialmente memorizzato nella posizione di memoria puntata da i*/ void orderstatistic(ALBERO T,int *i,int *order) { if (T!=NULL) if (T->left) orderstatistic(T->left,i,order); if (*i==1) *order=T->elem; return; } * i= * i-1; If((*i>0)&&(T->right)) orderstatistic(T->right,i,order); Si scriva una procedura che dato un albero binario di ricerca calcoli l’i-esimo order statistic Qui farli ragionare un attimo sull’aritmetica dei puntatori
4
Si scriva una procedura
Esercizio 10 /*Post:verifica se un albero binario e’ un albero binario di ricerca*/ struct max_min { int max; int min; }; typedef struct max_min MAXMIN; typedef MAXMIN* MAX_MINPTR; struct risposta int binricerca; MAX_MINPTR maxmin; } typedef struct risposta RISPOSTA; typedef RISPOSTA * RISPOSTAPTR; Si scriva una procedura Che dato un Albero binario Verifichi che sia Un albero binario Di ricerca Qui farli ragionare un attimo sull’aritmetica dei puntatori
5
Si scriva una procedura
Esercizio 10 RISPOSTAPTR verificabinricerca (ALBERO T) { RISPOSTAPTR temp,temp1,temp2; int t1,t2; ALBERO temp; if (T==NULL) temp=malloc(sizeof(RISPOSTA)); temp->binricerca=1; temp->maxmin=NULL; return temp; } Si scriva una procedura Che dato un Albero binario Verifichi che sia Un albero binario Di ricerca Qui farli ragionare un attimo sull’aritmetica dei puntatori
6
Esercizio 10bis { temp1=verificabinricerca(T->left);
else { temp1=verificabinricerca(T->left); temp2=verificabinricerca(T->right); temp=malloc(sizeof(RISPOSTA)); t1=((temp1->maxmin==NULL)||(temp1->maxmin->max<=T->elem)); t2=((temp2->maxmin==NULL)||(temp2->maxmin->min>=T->elem)); temp->binricerca=temp1->binricerca && temp2->binricerca &&t1 &&t2; temp->maxmin=malloc(sizeof(MAXMIN)); temp->maxmin->max=T->elem; temp->maxmin->min=T->elem; if ((T->left)&&(temp1->maxmin->max>T->elem)) temp->maxmin->max=temp1->maxmin->max; if ((T->right)&&(temp2->maxmin->max > temp->maxmin->max)) temp->maxmin->max=temp2->maxmin->max; if ((T->left)&&(temp1->maxmin->min<T->elem)) temp->maxmin->min=temp1->maxmin->min; if ((T->right)&&(temp2->maxmin->min < temp->maxmin->min)) temp->maxmin->min=temp2->maxmin->min; return temp; } Qui farli ragionare un attimo sull’aritmetica dei puntatori
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.