What is binary tree - Binary tree
Идея
- В этом двоичном дереве должно выполняться правило: A[parent(i)] ≤ A[i] (родитель любой вершины ≤ детей):
- Используем Nearly completed binary tree для того, чтобы дерево не было слишком высоким. Кучу можно реализовать и на обычном Binary tree, но тогда его высота может быть слишком большой и скорость операций станет хуже.
- $parent(i) = \lfloor\frac{i-1}{2}\rfloor$
- $leftChild(i) = 2*i+1$
- $rightChild(i) = 2*i+2$
В макс-куче всё симметрично, вот её определение

Определение MaxHeap. https://stepik.org/course/217/syllabus
Functions implementation
Basic min-heap functions with nearly completed BT
Secondary min-heap functions with nearly completed BT
CreateHeap from array
Building a MinHeap from array