2010-06-25 4 views
0

힙 데이터 구조에서 왼쪽 자식이 자체 수준에서 올바른 자식 이상일 수 있다는이 질문이 있습니까? 내 말은이 세 개의 숫자 9,5,8을 고려해야하며 최대 힙 데이터 구조를 만들어 뿌리가 9가되고 8이 왼쪽 자식이고 5가 올바른 자식이라는 사실입니까? 제발 도와주세요약 힙 (최대 힙 및 최소 힙)

답변

2

그건 중요하지 않습니다. max-heap의 노드에는 하위 노드가 있어야하고 min-heap의 노드에는 하위 노드가 있어야합니다. 그것들은 유일한 요구 사항입니다.

+0

그래서 부모의 왼쪽과 오른쪽 자식을 설정하는 방법에 대한 규칙이 없습니까? 힙이 거의 완전한 이진 트리이기 때문에 이진 트리의 규칙이라고 생각합니다. 왼쪽 자식이 그 오른쪽 자식보다 적어야합니다! 나는 위의 예제에서 "root : 9"와 "leftChild : 5"와 "rightChild : 8"을 써야한다고 생각합니다. 그렇지 않습니까? – user355002

+0

일반적으로 최대 힙을 작성하는 방법은 배열의 중간에서 첫 번째 요소를 시작하고 노드를 교환하여 각 노드가 트리를 탐색하도록 재귀 적으로 수행하는 것입니다. 이것은 O (n) 시간에 수행 할 수 있습니다. 이진 검색 트리가 아니므로 형제 노드 사이에 특별한 관계가 없습니다. 부모 노드보다 크기가 작거나 (최소 힙의 경우 더 큼), 형제 노드 사이에는 특별한 관계가 없습니다. –

+0

aha이 데이터 구조에서 키를 검색하려면 이진 검색 트리로 만들 필요가 없습니다. – user355002

0

최대 - 힙 속성 :

  1. 루트는 최대 요소입니다. O (1) 최대 요소 검색 시간.
  2. 아이들은 하위 트리의 루트보다 항상 작다.
  3. 최소 요소가 잎 요소 어딘가에있다 (왼쪽 및 오른쪽 아이들 사이에 조건이 없음), O (N/2) == O (n) 최소 요소를 찾는 데 필요한 시간.

최소 힙 성질 :

  1. 루트 최소 요소이다. O (1) mim 요소를 검색하는 시간.
  2. 아이들은 하위 트리의 루트보다 항상 크다.
  3. 최대 요소가 잎 요소 어딘가에있다 (왼쪽 및 오른쪽 아이들 사이에 조건이 없음), O (N/2) == O (n) 최대 요소를 찾으려면 시간이 필요합니다.

따라서 힙은 검색에 적합하지 않지만 검색은 선형 O (n) 시간이 걸리기 때문에 요소 배열을 정렬하는 데 사용됩니다.

검색을 위해 O (h) 시간에 동일한 작업을 수행하는 이진 검색 트리 (BST)를 사용할 수 있습니다. 그리고 최상의 경우 BS 트리가 균형 잡혀 있으면 O (logn)에서 검색을 수행합니다.