Я видел множество различных реализаций BK Trees в множестве разные языки, и буквально ни один из них не включает способ удаления узлов из дерева.
Даже исходная статья, где впервые были представлены BK Trees, не дает осмысленного представления о удаление узла, так как авторы просто предлагают пометить узел для удаления, чтобы он игнорировался:
Удаление ключа в структурах 1 [Дерево BK] и 2 следует процессу, аналогичному описанному выше, с особым вниманием к случаю, когда удаляемый ключ является репрезентативным x° [корневой ключ]. В этом случае ключ нельзя просто удалить, так как он необходим для информации о структуре. Вместо этого для каждого ключа должен использоваться дополнительный бит, который указывает, действительно ли ключ соответствует записи или нет. Алгоритм поиска изменен соответствующим образом, чтобы игнорировать ключи, не соответствующие записям. Это включает проверку дополнительного бита в процедуре обновления.
Хотя теоретически возможно правильно удалить узел в дереве BK, возможно ли это сделать за линейное/сублинейное время?