Я ломал себе голову, пытаясь разными способами, но лучшее, что у меня получилось, это O (log ^ 2 (n)). точный вопрос: создайте функцию Split(AVLtree T, int k)
, которая возвращает 2 дерева AVL (например, кортеж) так, чтобы все значения в T1 были меньше или равны k, а остальные были в T2. k не обязательно находится в дереве. время должно быть O (log (n)). Предположим, что эффективная реализация дерева AVL, и мне удалось создать функцию слияния за время O (log (| h1-h2 |)).
Любая помощь будет очень полезна.