1. An area of storage used for dynamic allocation of data structures where the order of releasing the allocated data structure is indeterminate. Compare stack.
2. A complete binary tree (see complete tree) in which the value at each node is at least as large as the values at its children (if they exist). Heaps are used to implement priority queues.