Це не важче.
З подвійно пов'язаними списками, коли ви вставляєте, ви будете виділяти пам'ять, і тоді ви будете зв'язуватися або з головою, або з попереднім вузлом, і з хвостом, або з наступним вузлом. Коли ви видаляєте, ви від’єднаєте зв’язок із абсолютно того самого, а потім звільняєте пам'ять. Всі ці операції симетричні.
Це передбачає, що в обох випадках у вас є вузол для вставки / видалення. (А у випадку вставки, у вас також є вузол, який потрібно вставити раніше, тож певним чином вставлення можна вважати дещо складнішим.) Якщо ви намагаєтесь видалити, маючи не вузол для видалення, а корисний навантаження вузла, то, звичайно, вам доведеться спочатку здійснити пошук у списку корисного навантаження, але це не є недоліком видалення, чи не так?
Для збалансованих дерев те саме стосується: дерево, як правило, потребує балансування відразу після вставки, а також відразу після видалення. Добре спробувати спробувати лише один порядок балансування та застосувати його після кожної операції, незалежно від того, була це вставка чи видалення. Якщо ви намагаєтеся здійснити вставку, яка завжди залишає дерево збалансованою, а також видалення, яке завжди залишає дерево врівноваженим, не маючи обох спільних процедур балансування, ви зайво ускладнюєте своє життя.
Коротше кажучи, немає жодної причини, чому одному слід бути важче, ніж іншому, і якщо ви виявите, що це так, то насправді можливо, що ви стали жертвою (дуже людської) тенденції знайти природніше думати. конструктивно, ніж субтрактивно, це означає, що ви можете здійснювати видалення таким чином, який є складнішим, ніж це має бути. Але це питання людини. З математичної точки зору, питання не виникає.
pop,extract-min?