Drzewo binarne - szukanie najbliższej wartości

0

Witam.
Potrzebuje funkcji, która znajdzie najbliższy element drzewa dla zadanej zmiennej (ale nie większy niż zadana zmienna!).
Znalazłem tylko taką, która znajduje po prostu najbliższy element:

 
typedef struct el
{
    int key;
    struct el *left, *right, *parent;
};

typedef struct el elTree;
typedef elTree *tree;

tree closestBST(tree d, int val){
    tree p;
    if(d->key == val)
        return d;
    if(val < d->key){
        if(!d->left)
            return d;
        p = closestBST(d->left, val);
        return abs(p->key-val) > abs(d->key-val) ? d : p;
    }else{
        if(!d->right)
            return d;
        p = closestBST(d->right, val);
        return abs(p->key-val) > abs(d->key-val) ? d : p;
    }
    return MININF;
}

Potrafi ktoś to przerobić aby funkcja zwracała najbliższe ale NIE większe wartości?
Pozdrawiam.

1

Tak, prawie każdy na tym forum potrafi.
Źle zrozumiałeś zadanie, masz napisać taką funkcje, nie znaleźć.

0

Bardzo mi pomogłeś! Naprawdę! Stary, jesteś wielki! -.-

1 użytkowników online, w tym zalogowanych: 0, gości: 1