힙 데이터 구조에서 왼쪽 자식이 자체 수준에서 올바른 자식 이상일 수 있다는이 질문이 있습니까? 내 말은이 세 개의 숫자 9,5,8을 고려해야하며 최대 힙 데이터 구조를 만들어 뿌리가 9가되고 8이 왼쪽 자식이고 5가 올바른 자식이라는 사실입니까? 제발 도와주세요약 힙 (최대 힙 및 최소 힙)
0
A
답변
2
그건 중요하지 않습니다. max-heap의 노드에는 하위 노드가 있어야하고 min-heap의 노드에는 하위 노드가 있어야합니다. 그것들은 유일한 요구 사항입니다.
0
최대 - 힙 속성 :
- 루트는 최대 요소입니다. O (1) 최대 요소 검색 시간.
- 아이들은 하위 트리의 루트보다 항상 작다.
- 최소 요소가 잎 요소 어딘가에있다 (왼쪽 및 오른쪽 아이들 사이에 조건이 없음), 즉 O (N/2) == O (n) 최소 요소를 찾는 데 필요한 시간.
최소 힙 성질 :
- 루트 최소 요소이다. O (1) mim 요소를 검색하는 시간.
- 아이들은 하위 트리의 루트보다 항상 크다.
- 최대 요소가 잎 요소 어딘가에있다 (왼쪽 및 오른쪽 아이들 사이에 조건이 없음), 즉 O (N/2) == O (n) 최대 요소를 찾으려면 시간이 필요합니다.
따라서 힙은 검색에 적합하지 않지만 검색은 선형 O (n) 시간이 걸리기 때문에 요소 배열을 정렬하는 데 사용됩니다.
검색을 위해 O (h) 시간에 동일한 작업을 수행하는 이진 검색 트리 (BST)를 사용할 수 있습니다. 그리고 최상의 경우 BS 트리가 균형 잡혀 있으면 O (logn)에서 검색을 수행합니다.
관련 문제
- 1. 최대 힙 및 이진 트리
- 2. -Xms : 초기 힙 크기 또는 최소 힙 크기?
- 3. JBoss에 최적의 최소 및 최대 힙 크기 지정
- 4. JVM 최소 힙 크기 권장 사유?
- 5. 바람둥이 최대 자바 힙 메모리
- 6. Java의 최대 힙 공간 제한
- 7. 힙 위반
- 8. C++ 바이너리 힙 구현
- 9. 힙 손상
- 10. malloc() 및 힙 메모리
- 11. 기본 힙 및 ddms
- 12. 스레딩 힙 및 스택
- 13. _CrtMem * 및 디버그 힙
- 14. 피보나치 힙 문제
- 15. 배열이없는 MinMax 힙 구현
- 16. 고주파 힙
- 17. 힙 클래스
- 18. 힙 구현
- 19. Android 힙 크기 및 SoftReferences
- 20. 사용자 정의 유형의 C++ 최소 힙
- 21. Java webstart 힙 덤프
- 22. JMP의 Java 힙 크기
- 23. d- 힙 삭제 알고리즘
- 24. 1-ary 힙 정렬?
- 25. java.lang.OutOfMemoryError : Java 힙 공간
- 26. 힙 손상 찾기
- 27. MSVC 힙 보류/커밋
- 28. 힙 할당 객체의 데이터 멤버가 힙 또는 스택에 할당됩니까?
- 29. JAVA 힙 스택 오류
- 30. Windows에서 힙 무작위 화
그래서 부모의 왼쪽과 오른쪽 자식을 설정하는 방법에 대한 규칙이 없습니까? 힙이 거의 완전한 이진 트리이기 때문에 이진 트리의 규칙이라고 생각합니다. 왼쪽 자식이 그 오른쪽 자식보다 적어야합니다! 나는 위의 예제에서 "root : 9"와 "leftChild : 5"와 "rightChild : 8"을 써야한다고 생각합니다. 그렇지 않습니까? – user355002
일반적으로 최대 힙을 작성하는 방법은 배열의 중간에서 첫 번째 요소를 시작하고 노드를 교환하여 각 노드가 트리를 탐색하도록 재귀 적으로 수행하는 것입니다. 이것은 O (n) 시간에 수행 할 수 있습니다. 이진 검색 트리가 아니므로 형제 노드 사이에 특별한 관계가 없습니다. 부모 노드보다 크기가 작거나 (최소 힙의 경우 더 큼), 형제 노드 사이에는 특별한 관계가 없습니다. –
aha이 데이터 구조에서 키를 검색하려면 이진 검색 트리로 만들 필요가 없습니다. – user355002