У меня есть вопрос, что в структуре данных кучи левый ребенок может быть больше, чем правильный ребенок на своем собственном уровне? Я имею в виду, что рассмотрю эти три числа 9,5,8, и я хочу создать структуру данных с максимальной суммой, так что корень будет равен 9, и верно ли, что 8 - его левый ребенок, а 5 - его правильный ребенок? , пожалуйста, помогите мне спасибоо куче (max-heap и min heap)
0
A
ответ
2
Это не имеет значения. У узла в макс-куче должны быть дети, которые ниже, а узел в мини-куче должен иметь детей, которые больше. Это единственные требования.
0
Max-Heap свойства:
- корень максимальный элемент. O (1) время для поиска максимального элемента.
- Детей всегда меньше, чем корень любого поддерева. (Нет никаких условий между левыми и правыми детьми)
- Минимального элемент лежит где-то в листовых элементах, т.е. O (п/2) == O (n) требуется время, чтобы найти минимальный элемент.
Мин-вороха свойства:
- Корень является элементом мин. O (1) время для поиска мимического элемента.
- Дети всегда больше, чем корень любого поддерева. (Нет никаких условий между левой и правой детей)
- Максимальный элемент лежит где-то в листовых элементов, т.е. O (п/2) == O (n) требуется время, чтобы найти максимальный элемент.
Следовательно, куча не подходит для поиска, но используется для сортировки массива элементов, поскольку поиск принимает линейное время O (n).
Для поиска мы всегда можем искать деревья двоичного поиска (BST), которые делают то же самое в O (h) времени. И в лучшем случае он выполнит поиск в O (logn), если дерево BS будет сбалансировано.
Смежные вопросы
- 1. Max heap и реализация Min heap для медианной Java
- 2. min heap in python
- 3. Построение Min/Max Binary Heap
- 4. Как создать класс, который принимает компаратор (для Max Heap и Min Heap)?
- 5. Binary Min Heap: Печать неактивных значений
- 6. Функция Min Heap
- 7. Min heap in javascript
- 8. Min-Heap to Max-Heap, Сравнение
- 9. C++ min heap с пользовательским типом
- 10. Какова средняя временная стоимость min heap
- 11. Min Heap Extract 2 Smallest Element
- 12. Здание MIN-HEAP в Python
- 13. Изменение maxHeap Сортировка minHeap Сортировка
- 14. Maxheap vs priorityqueue confusion
- 15. Java-реализация для Min-Max Heap?
- 16. Как «heapify» массив на основе min heap после удаления min?
- 17. Использование Min-Heap для сортировки слов
- 18. Java Min-Heap Реализация очереди приоритетов - Итерация
- 19. min-heap с нулевым массивом C++
- 20. Алгоритм Heapsort с использованием min-heap
- 21. Min-Max heap delete max element
- 22. Extract min implemetation for heap in C++
- 23. Как поместить элемент min из std :: heap?
- 24. Найти, если min-heap имеет k меньших элементов, чем запрос
- 25. Max и Min heap с теми же элементами
- 26. Реализация Max Heap
- 27. Native Heap Максимальный размер и освобождение памяти
- 28. maxheap метод кучиSort с индексом 0 и не индекс 1
- 29. Удалить элемент из любого положения в максимальной куче
- 30. Реализация MinHeap и MaxHeap в Java
так что нет правила для того, как мы устанавливаем левый и правый дочерний элемент родителя? Потому что куча почти полного двоичного дерева, и я думаю, что это было правилом в двоичном дереве, которое оставило ребенка, должно быть меньше этого правильного ребенка! Я думаю, что для моего приведенного выше примера я должен написать «root: 9» и «leftChild: 5» и «rightChild: 8», не так ли? – user355002
Как обычно вы создаете максимальную кучу, нужно начинать посередине массива до первого элемента и рекурсивно позволять каждому узлу просачиваться вниз через дерево, обменивая узлы. Это можно сделать в O (n) времени. Это не двоичное дерево поиска, поэтому нет особых связей между узлами-братьями, кроме того, что они меньше (или больше в случае мини-кучи), чем их родитель. –
aha, и если мы хотим найти ключ в этой структуре данных, нам не нужно делать это как двоичное дерево поиска? – user355002