2017-05-03 4 views

답변

0

가 참조 :

  • 첫째, 마지막 수준의 마지막 요소와 힙의 루트를 대체 : https://en.wikipedia.org/wiki/Binary_heap#Extract 몇 즉

    , 세 단계를 수행하십시오. 그것은 O (1)에 대해 수행됩니다.

  • 둘째, 새 루트를 자식 (여전히 O (1))과 비교하십시오. 모든 것이 정상이면, 끝났어!
  • 이제 까다 롭습니다. 새로운 루트가 더 큰 경우 (우리는 당신이 그것의 아이들 중 하나보다 위에 최소를 가지고 있다고 생각합니다), 그들을 바꾸십시오! 이제 (아마도) 당신은 아이의 하위 트리에서 똑같은 문제가 있습니다. 하위 트리 안의 2 ~ 3 단계를 반복하십시오! 이 아닌은 한 레벨 아래로 내려갈 때마다 트리의 레벨 수보다 더 많은 횟수를 반복해야합니다. 균형 이진 트리에는 O (Ng N) 레벨이 있습니다. 참고 : 루트가 둘 다 자식보다 크면 작은 루트로 바꿉니다.
+0

이진 트리의 높이 (레벨 수)는 다음과 같이 O (lg N)입니다. 트리의 첫 번째 레벨에는 1 개의 요소가 있고, 두 번째 레벨에서 2, 3, 4, 8, 16 등등을 사용하여 트리 안쪽에 31 개의 요소를 유지하려면 5 개의 레이어가 필요하고, 6 개의 레이어가 필요하며, 6 개가 필요하고, 127을 유지하려면 7이 필요합니다. 관측 가능 =) – Alagunto

관련 문제