# 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.![](https://1235041943-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3wXpaIhjJ_SlPm0Aby%2F-M3wY3XqBBucicplM4ZJ%2F-M3wYeYJCsFfWiXpbdCl%2FScreen%20Shot%202017-10-28%20at%201.26.55%20PM.png?generation=1585858946146660\&alt=media)
