Когда вы удаляете один элемент из красно-черного дерева, это занимает O (log n) времени, где n - количество элементов в данный момент в дереве.
Если вы удаляете только несколько элементов, то лучше просто удалить их один за другим, заканчивая O (k log n) операциями (k = удаленные элементы, n = элементы в дереве перед удалением).
Но если вы знаете, что собираетесь удалить большое количество узлов (например, 50% или более дерева), то лучше перебрать элементы, которые вы хотите сохранить (O (k '), операция, где k '= элементы, которые будут сохранены), затем очистите дерево (O (1) или O (n) в зависимости от вашей схемы управления памятью) и восстановите операцию дерева (O (k' log k ')). Общая сложность O (k ') + O (k' log k ') = O (k' log k '), что, очевидно, меньше, чем O (k log n), когда k'
Ну, в любом случае, суть в том, что когда вы собираетесь удалить MOST элементов, на практике лучше перечислить те, которые вы хотите сохранить, а затем перестроить дерево.