Min heap is a complete binary tree. A complete binary tree is a binary tree in which all levels are completely filled and all the nodes in the last level are as left as possible. Min heap should meets this criteria: the parent’s key is less than both children’s keys. The smallest value is at the root.

This post is min heap implementation. The max heap is opposite order. Note the search and traversal in min-heap implementation is the same as max-heap, so please refer to max-heap for these two operation implementations.

min heap

Table of Content


What is time complexity of insertion and deletion in a heap?

Since heap is a complete binary tree, the time complexity is O(logn).

What is a min heap?

A min heap is a complete binary tree, in which all levels are completely filled and all the nodes in the last level are as left as possible. In a min heap, the parent’s key is smaller than both children’s keys.


Map of heap implementations

Part 1 – Max-heap implementation

you are here

Part 2 – Min-heap implementation
Part 3 – Priority queue implementation with heap iterative solution
Part 4 – Priority queue implementation with heap recursive solution


Insert

We declare three attributes: heap, length and maxSize. heap is an array. maxSize is the max length of the array. It is used to initialize the array. length is actual number of elements in the array. It starts from 0.

To insert a new element, we put the new value at the end of the array. Then we move it up based on its value compared to its parent. If it’s value less than its parent, it should be switched the position with its parent, until it is below a smaller node and above a larger one. We call this process bubble up.

Java

Javascript

Python


Remove

The remove operation is to remove the element with the smallest value, which is the first one in the array. When we remove the first element in the array, we move the last element to the first to fill out the empty spot. But this element’s value might be larger than its children’s. To correct this, we compare its value with its children’s values, and switch with the child with the smaller value, until it is below a smaller node and above a larger one. This process is called bubble down. Bubble down is more complicated than bubble up because it has two children to compare.

Java

Javascript

Python


Free download

Download Min-heap implementation in Java, JavaScript and Python
Data structures introduction