По словам Рона Вейна, вы можете разделить и объединить красно-черные деревья за время O (log (n)). См. его статью: Эффективная реализация красно-черных деревьев с операциями разделения и объединения
Однако я все еще не уверен, что время работы сплита действительно верно.
Идея состоит в том, что split использует конкатенации log(n) в наихудшем случае. Эти конкатенации выполняются быстро, так как мы можем найти узел p, запомнив p из последней конкатенации.
Проблема в том, что конкатенация запускает алгоритм исправления (балансировки), который, насколько мне известно, требует O(log n) (см. шаг 5 в псевдокоде для конкатенации). Это дает мне время работы log(n)*log(n), так как расщепление приведет к конкатенации log(n) в наихудшем случае.
Рон Вейн не принимает во внимание алгоритм исправления в своей аргументации. Что я упустил в своем анализе, или алгоритм неверен?