어렵지 않습니다.
이중 연결 목록을 사용하면 삽입 할 때 메모리를 할당 한 다음 헤드 또는 이전 노드, 꼬리 또는 다음 노드와 연결됩니다. 삭제하면 정확히 동일한 연결을 해제 한 다음 메모리를 비 웁니다. 이 모든 작업은 대칭입니다.
이것은 두 경우 모두 삽입 / 삭제할 노드가 있다고 가정합니다. (삽입의 경우, 이전에 삽입 할 노드가 있으므로 삽입이 약간 더 복잡한 것으로 생각 될 수 있습니다.) 삭제할 노드가 아닌 페이로드 를 삭제하려고하면 물론 페이로드에 대한 목록을 먼저 검색해야하지만 삭제의 단점은 아닙니다. 그렇지 않습니까?
균형 잡힌 나무도 마찬가지입니다. 나무는 일반적으로 삽입 직후와 삭제 직후에 균형을 유지해야합니다. 하나의 밸런싱 루틴 만 시도하고 삽입 또는 삭제 여부에 관계없이 각 작업 후에 적용하는 것이 좋습니다. 항상 트리 균형을 유지하는 삽입과 두 트리가 동일한 균형 조정 루틴을 공유하지 않고 항상 트리 균형을 유지하는 삭제를 구현하려고하면 불필요하게 인생이 복잡해집니다.
요컨대, 하나가 다른 하나보다 더 어려워 야 할 이유가 없으며, 그것이 사실이라면, 당신이 생각하는 것이 더 자연스러워지는 (매우 인간적인) 경향의 희생자 일 가능성이 있습니다. 빼기보다 건설적으로, 즉, 필요한 것보다 복잡한 방식으로 삭제를 구현할 수 있음을 의미합니다. 그러나 그것은 인간의 문제입니다. 수학적 관점에서는 문제가 없습니다.
pop
,extract-min
?