What is binary tree - Binary tree

Идея

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

В макс-куче всё симметрично, вот её определение

Определение MaxHeap. https://stepik.org/course/217/syllabus

Определение 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