Formula

Group

Concept

Keywords

Data structureHeapAlgorithms

Last edited time

Apr 29, 2024 2:12 PM

Slug

Status

Draft

Title

Code inside page

Github

# 👉 Overview

### 👀 What ?

Heap is a specialized tree-based data structure that satisfies the heap property. In a max heap, for any given node I, the value of I is greater than or equal to the values of its children. In a min heap, the value of I is less than or equal to the values of its children.

### 🧐 Why ?

Heaps are crucial in computer science because they offer efficient implementations of priority queues, which are key in various algorithms like Dijkstra's algorithm for finding the shortest path in a graph, or in the Heap Sort algorithm. Understanding heaps is important for anyone delving into data structures and algorithms, a fundamental area in computer science.

### ⛏️ How ?

A heap can be implemented using an array, where each element in the array represents a node of the heap. The parent-child relationship is defined by their positions in the array. For any element at index i, its left child is at index 2i+1 and right child is at index 2i+2.

### ⏳ When ?

The concept of heap was introduced in 1964 as part of the development of the heapsort algorithm. Since then, it has been a fundamental data structure in computer science.

# ⚙️ Technical Explanations

A heap is visualized as a binary tree where each node has at most two children. Despite this visualization, it is usually implemented with an array for efficiency. The heap property ensures that the tree is 'complete', meaning all levels of the tree are fully filled except for the last level, which is filled from left to right. This property allows efficient retrieval and removal of the maximum element (in a max heap) or the minimum element (in a min heap) in O(logn) time, making it an effective data structure for priority queue implementations. Heaps are also used in memory management in programming languages.