Based on heap property there are two types of heap :

**Max-Heap**: The key present at the any node must be greater than the keys present at both of it’s children.**Min-Heap**: The key present at the any node must be less than the keys present at both of it’s children.

**How is Binary Heap represented?**

- The root element will be at A[0]
- For ith node A[i] : Parent node = A [(i-1)/2], Left child node = A [(2*i) + 1], Right child node = A [(2*i)+2]. This property allows quick access-by-index which help us to manipulate the heap by swapping nodes. That’s why we also use heap to perform in-place sorting called Heap Sort.

Use it whenever you needquick access to the largest (or smallest)element , because that element will always be the first element in the array or at the root of the tree. So it's a good way to deal with incoming events or data where access to the smallest/largest are always required. That's whyPriority Queuescan be efficiently implemented using Binary Heap because it supports insert, delete and extract_max, decrease_Key operations inO(log n)time.

**Heap Applications** : Heap Sort, Priority Queue, Huffman Coding, Dijkstra Algorithms, Prims Algorithms, Selection Algorithms, Order statistics etc.