# Heap

This page discusses the heap data structure. For the place where memory is dynamically allocated from, see dynamic memory allocation.

In computer science a **heap** is a specialized tree-based data structure. Its base datatype (used for node keys) must be an ordered set.

Let *A* and *B* be nodes of a heap, such that *B* is a child of *A*. The heap must then satisfy the following condition (*heap property*):

- key(
*A*) ≥ key(*B*)

This is the only restriction of general heaps. It implies that the greatest (or the smallest, depending on the semantics of a comparison) element is always in root node. Due to this fact, heaps are used to implement priority queues. The efficiency of heap operations is crucial in several

graph algorithms.

Heaps are used in the sorting algorithm called heapsort.

## External links