> For the complete documentation index, see [llms.txt](https://ondrej-kvasnovsky-2.gitbook.io/algorithms/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ondrej-kvasnovsky-2.gitbook.io/algorithms/data-structures/heap.md).

# Heap

Heap guarantees that elements on higher levels are greater (for max-heap) or smaller (for min-heap) than elements on lower levels.

Heaps are the best when we want to get maximum or minimum of set of values, complexity of `O(log n)`. Heaps require to have a priority of their nodes over their children. BST is good for searching in general, complexity of `O(1)`. More about the difference between [heap and BST](https://cs.stackexchange.com/questions/27860/whats-the-difference-between-a-binary-search-tree-and-a-binary-heap).

Ordered binary heap helps to implement priority queue operations.![](/files/-M3wYeYJCsFfWiXpbdCl)
