힙에서 임의의 노드를 삭제하려는 상황이 있는데 어떤 선택을 할 수 있습니까? 나는 우리가 마지막 노드와 힙의 첫번째 노드를 쉽게 삭제할 수 있다는 것을 안다. 그러나 마지막 노드를 삭제한다고하면 힙에서 임의 노드를 삭제하기위한 동작이 올바르게 정의되었는지 확실하지 않습니다.힙에서 임의 노드를 삭제할 수 있습니까?
_______________________
|X|12|13|14|18|20|21|22|
------------------------
이 경우에 I 12, 22이 정의되는 노드를 삭제할 수 있지만 예를 들어 임의의 노드를 삭제 13이라고 말하면서도 여전히 어떻게 든 힙의 전체 트리 속성을 유지합니다 (다른 속성과 함께).
배열 기반 힙에서 무작위 삭제는 매우 비효율적입니다. 난수 위치를 찾으려면 전체 배열을 검색해야 할 수도 있습니다. 내가 맞습니까? –
@KaushikLele - 임의의 숫자 (힙에는 없을 수도 있음)의 위치를 검색하지 않습니다. 대신 임의의 위치를 선택하고 힙을 유지하는 방식으로 해당 항목을 제거합니다. – Joel