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.