No es mas dificil.
Con listas doblemente vinculadas, cuando inserte, estará asignando memoria, y luego se vinculará con el nodo principal o el nodo anterior, y con el nodo de cola o el siguiente. Cuando elimine, estará desvinculando exactamente de lo mismo y luego liberando memoria. Todas estas operaciones son simétricas.
Esto supone que en ambos casos tiene el nodo para insertar / eliminar. (Y en el caso de la inserción, que también tiene el nodo para insertar antes, por lo que, en cierto modo, la inserción podría considerarse un poco más complicada). Si está tratando de eliminar no tener el nodo para eliminar, sino la carga útil del nodo, entonces, por supuesto, primero tendrá que buscar en la lista la carga útil, pero eso no es un defecto de eliminación, ¿verdad?
Con árboles balanceados, lo mismo aplica: un árbol generalmente necesita balancearse inmediatamente después de una inserción y también inmediatamente después de una eliminación. Es una buena idea intentar tener una sola rutina de equilibrio y aplicarla después de cada operación, independientemente de si fue una inserción o una eliminación. Si está intentando implementar una inserción que siempre deja el árbol equilibrado, y también una eliminación que siempre deja el árbol equilibrado, sin que ambos compartan la misma rutina de equilibrio, está complicando innecesariamente su vida.
En resumen, no hay ninguna razón por la cual uno debería ser más difícil que el otro, y si descubres que es así, es posible que seas víctima de la tendencia (muy humana) de pensar que es más natural pensar de manera constructiva que sustractiva, lo que significa que podría estar implementando la eliminación de una manera que es más complicada de lo que debería ser. Pero eso es un problema humano. Desde un punto de vista matemático, no hay problema.
pop
,extract-min
?