Witam!
Muszę zrobić funkcję znajdującą maxa w nieuporządkowanym drzewie binarnym. Próbowałem zrobić to rekurencyjnie (swoją drogą nie umiem przeszukiwać drzewa inaczej niż rekurencyjnie) lecz podczas 'zamykania' rekurencji zmienna przechowująca maxa się zmienia z powodu jej lokalnego wykorzystania.
Struktura drzewa:
typedef struct element
{
int key;
struct element *left, *right;
};
typedef struct element elDrzewa;
typedef elDrzewa *drzewo;
int searchMax(drzewo d, int max)
{
if(d != NULL)
{
searchMax(d->right, max);
if(max < d->key) max=d->key;
else max=max;
printf("klucz: %d -> max: %d\n",d->key,max);
searchMax(d->left, max);
if(max < d->key) max=d->key;
return max;
}
}
Ta funkcja zawsze zwraca zawsze korzeń. Ma ktoś jakiś pomysł jak ją przerobić?