Я реализовал красно-черное дерево в C. На карте C ++ можно предоставить настраиваемое сравнение, которое выполняет только операцию value1 ‹value2. Эта операция возвращает истину или ложь, но как реализовать дерево без операции сравнения? Я хочу, чтобы моя функция сравнения возвращала только 1 или 0 без оператора ==. Я пытался прочитать его в stl, но код не читается, хотя у меня есть опыт работы с C ++.
Полный код не требуется, потому что это тот же код, что и любая другая реализация дерева. На данный момент существует следующая функция сравнения:
int cmp(void *key1, void *key2){
if(*(int*)key1 < *(int*)key2){
return 1;
}else if(*(int*)key1 > *(int*)key2){
return -1;
}else{
return 0;
}
}
Мне нужна такая функция сравнения:
int cmp(void *key1, void *key2){
if(*(int*)key1 < *(int*)key2){
return 1;
}else{
return 0;
}
}
Я не понимаю, как работает поиск с этой функцией сравнения, потому что при обнаружении узла нет условия остановки.