PDA

View Full Version : [C] Minimo in albero binario


Mr.Paschi!
08-06-2006, 17:06
int minimo(int min, Tree T)
{ if (T!=null)
{ min = minimo(min,T.leftchild);
if(min>T.element) min = T.element;
min = minimo(min,T.rightchild);
}
return min;

}


Questo algoritmo trova ricorsivamente il minimo in un albero binario?
Qualcuno mi saprebbe dare una soluzione (se esiste) a partire dalla signature
int minimo(Tree T) ?

71104
08-06-2006, 19:02
secondo me devi solo cambiare ordine, la funzione minimo la devi chiamare ricorsivamente a sinistra e a destra e alla fine usare l'if sul nodo corrente:

int minimo(int min, Tree T) {
if (T != NULL) {
min = minimo(min, T.leftChild);
min = minimo(min, T.rightChild);
if (min > T.element) {
min = T.element;
}
}
return min;
}

marco.r
08-06-2006, 22:38
secondo me devi solo cambiare ordine, la funzione minimo la devi chiamare ricorsivamente a sinistra e a destra e alla fine usare l'if sul nodo corrente:

int minimo(int min, Tree T) {
if (T != NULL) {
min = minimo(min, T.leftChild);
min = minimo(min, T.rightChild);
if (min < T.element) {
min = T.element;
}
}
return min;
}

Penso tu abbia invertito per sbaglio il segno sulla 5 riga. In ogni caso dubito faccia qualche differenza percorrere l'albero in ordine postfisso piuttosto che infisso.

71104
09-06-2006, 07:00
Penso tu abbia invertito per sbaglio il segno sulla 5 riga. hai ragione scusa (corretto)

Mr.Paschi!
09-06-2006, 07:27
Si infatti nn fa differenza.. quindi mi confermate che è corretto giusto?