Предупреждение: Есть некоторые плохие практики в этом следующем кодеKd-дерево испорчено K ближайшего соседа
Здравствуйте, я только что был несколько вопросов о том, как правильно форматировать мой KD дерева K поиска ближайшего соседа. Вот пример моей функции.
void nearest_neighbor(Node *T, int K) {
if (T == NULL) return;
nearest_neighbor(T->left, K);
//do stuff find dist etc
if(?)nearest_neighbor(T->right, K);
}
Этот код является путаным, поэтому я попытаюсь его объяснить. Моя функция принимает только значение k и узел T. То, что я пытаюсь сделать, - найти расстояние между текущим узлом и любым другим значением в структуре. Все эти работы, проблема, с которой я сталкиваюсь, заключается в понимании того, когда и как вызывать рекурсивные вызовы near_neighbor (T-> left/T-> right, K) Я знаю, что я намерен обрезать вызовы с правой стороны, Не знаю, как это сделать. Между прочим, это многомерное дерево KD. Любое руководство к лучшим примерам будет очень оценено.