I jako to ID byłoby rozszerzenie w postaci stringa i jako wartość byłaby informacja w postaci stringa (ale to mniej ważne). I umyśliłem sobie, że może być tablica stringow z tymi WSZYSTKIMI rozszerzeniami i index stringa z rozszerzeniem odpowiadalby int'owemu id w drzewie...
Nie potrzebujesz intów, żeby szukać rzeczy w drzewie. Kluczem jak najbardziej może być string.
Jeśli "zwykłe" drzewo i funkcja szukania wygląda tak:
struct Node {
int key;
Dane dane;
Node *left, *right;
};
Node* search(int key, Node * node) {
if (node == nullptr) return node;
if (key == node->key) return node;
return search(key, key < node->key ? node->left : node->right);
}
To dokładnie ten sam kod, tylko ze stringowymi kluczami, będzie też poprawnie działał:
struct Node {
std::string key;
Dane dane;
Node *left, *right;
};
Node* search(const std::string &key, Node * node) {
if (node == nullptr) return node;
if (key == node->key) return node;
return search(key, key < node->key ? node->left : node->right);
}
(BTW, mniej więcej tak w C++ie w bibliotece standardowej funkcjonują std::map<int, Dane> i std::map<std::string, Dane>)
A, jeszcze to:
Jak może być relacja większy mniejszy?
Że bodajże lewa strona była większa od rodzica a prawa mniejsza i tak to jakoś szło.
Sam sobie odpowiedziałeś ;)