(1) Я думаю i - опечатка; У меня нет ничего подобного в моей реализации, и она, кажется, работает нормально (знаменитые последние слова ..).
(2) whichAxis - это плоскость, в которой вы ищете минимум. Так что в двумерных данных это будет либо x, либо y. Например. для точек (20,40) и (40,20) один является минимумом по x, а другой по y. Когда вы начинаете искать заменяющий узел, вы должны знать, в какой плоскости разбиения вы должны искать.
(3) Слайд написан немного странно. Вы хотите найти минимальное значение в соответствующей плоскости. Может быть, это прояснит немного (c #). Моя реализация для набора данных, использующего восточных и северных в качестве х и у. minAxis - это просто бул, потому что у меня всего два самолета.
bool winner = minAxis ? (left.Easting < right.Easting) : (left.Northing < right.Northing);
return winner ? left : right;
... где left и right - минимальные значения, которые рекурсивно ищутся из левого и правого дочерних деревьев узла, в котором мы находимся. если это прояснит: -)