WarSlash
2009-06-14, 22:49:31
Ich habe bisschen programmiert und stelle mir nun die Frage, welche Laufzeit, der untere Code mir erzeugt:
Die Funktion soll die Höhe eines Binärbaums ausgeben.
int hoehe(binbaum b)
{
if (b == NULL) /* Baum ist leer: Hoehe einfach -1 */
return -1;
else return 1+maximum(hoehe(b->linker_sohn),hoehe(b->rechter_sohn));
}
Ich meine, dass das Worst, Best und Average Case alle O(n-1) sind!
Der Algorithmus traversiert den ganzen Baum. Wenn der Baum eine lineare Liste ist, dann ist es eh O(n-1). Auch im ausgeglichen Fall, scannt er den ganzen Baum.
Bin mir aber nicht sicher! Wie sieht ihr das?
Die Funktion soll die Höhe eines Binärbaums ausgeben.
int hoehe(binbaum b)
{
if (b == NULL) /* Baum ist leer: Hoehe einfach -1 */
return -1;
else return 1+maximum(hoehe(b->linker_sohn),hoehe(b->rechter_sohn));
}
Ich meine, dass das Worst, Best und Average Case alle O(n-1) sind!
Der Algorithmus traversiert den ganzen Baum. Wenn der Baum eine lineare Liste ist, dann ist es eh O(n-1). Auch im ausgeglichen Fall, scannt er den ganzen Baum.
Bin mir aber nicht sicher! Wie sieht ihr das?