PDA

View Full Version : C - Albero n-ario


di@!
08-06-2005, 12:11
Un esercizio di un compito di esame che ho fatto stamattina diceva:

Si scriva una funzione per calcolare la larghezza di un albero n-ario.

Io ho svolto l'esercizio in questo modo:

struct tree {
int elem;
struct tree *next;
struct tree *down;
};

typedef struct tree *TREE;

void width (TREE t, int counter[], int x) {
if(t==NULL) return;
else {
counter[x]++;
width(t->next,counter,x);
width(t->down,counter,x+1);
}
}


Viene usato un vettore dove ogni elemento corrisponde ad un livello dell'albero. Ricordavo che il professore l'aveva fatto a lezione, solo che guardandolo ora noto che il prof a lezione l'ha fatto come il mio soltanto che ha invertito le due righe finali, ovvero ha richiamato la funzione prima su down e poi su next...è la stessa cosa o devo considerare l'esercizio sbagliato?

71104
08-06-2005, 12:29
ma LOL pure qui!! :D
sei quello con cui ho parlato stamattina all'uscita, vero? :D
sei la terza o quarta persona (me escluso) della Sapienza che incontro su questi forums :D

di@!
08-06-2005, 12:30
lol ma che nick è 71104 :D

71104
08-06-2005, 12:35
lol ma che nick è 71104 :D
vabbè, è na lunga storia, non te la racconto neanche perché è talmente idiota da far piangere (cazzate tra vecchi amici di liceo :D)
piuttosto, che nick è di@? :D

di@!
08-06-2005, 12:41
di@blo, nick ke uso quando gioco online

anx721
08-06-2005, 13:50
Un esercizio di un compito di esame che ho fatto stamattina Ricordavo che il professore l'aveva fatto a lezione, solo che guardandolo ora noto che il prof a lezione l'ha fatto come il mio soltanto che ha invertito le due righe finali, ovvero ha richiamato la funzione prima su down e poi su next...è la stessa cosa o devo considerare l'esercizio sbagliato?

E' la stessa cosa: le chiamate ricorsive condividono l'albero e il vettore di dati; l'albero resta invariato fra le due chiamate mentre il vettore viene modificato, ma la funzione duranteb il suo lavoro non legge mai i valori contenuti nel vettore, quindi le chiamate possono essere invertite.

di@!
08-06-2005, 13:57
E' la stessa cosa: le chiamate ricorsive condividono l'albero e il vettore di dati; l'albero resta invariato fra le due chiamate mentre il vettore viene modificato, ma la funzione duranteb il suo lavoro non legge mai i valori contenuti nel vettore, quindi le chiamate possono essere invertite.

ok thx