CLRS 운동에서 삭제 : 6.5-8노드 A를 [I]는 맥스 힙
동작 HEAP-DELETE(A,i)
힙 A
에서 노드 i
내의 아이템을 삭제한다. n 요소 최대 힙에 대해 O(lg n)
시간 실행되는 HEAP-DELETE
구현을 제공하십시오. 알고리즘은 입력 A[10]={84,22,19,21,3,10,6,5,20}
잘못 (지수가 1로 시작)와 삭제되는 A[6]=10
와 경우
이 궁금하다. 마지막 노드를 A[6]
으로 바꾸면 힙 값이 무시되고 힙 속성을 위반하게됩니다.
나는이 알고리즘을 작성했는데 제대로 작동하는지, 어디서 잘못되었는지 알고 싶었습니까? = - - 1
그리고 실제로 "속성 인 경우
A.heapsize을 : 그것은 오타,하지만 당신이 실제로 여기 증가 것처럼 보이는 경우
HEAP-DELETE(A,i) A[i]=A[A.heapsize] A.heapsize-=1 while i>1 and A[parent(i)]<A[i] swap A[i] with A[parent(i)] i=parent(i);
* 마지막 노드를 A [6]으로 바꾸면 힙 프로퍼티를 위반하게됩니다 * 정확히 "MAX-HEAPIFY"를 호출하는 이유 –
그러나 MAX-HEAPIFY는 기본 노드, 그 자식을 정렬하는 것입니다. 이 경우 A [6]는 마지막 노드로 대체 된 후 20이되고 A [6] = 20이 부모 인 19보다 큽니다. 부모 노드로 대체되지 않습니까? –