<P> In computer science, a heap is a specialized tree - based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less than or equal to (in a min heap) the key of C. The node at the "top" of the heap (with no parents) is called the root node . </P> <P> The heap is one maximally efficient implementation of an abstract data type called a priority queue, and in fact priority queues are often referred to as "heaps", regardless of how they may be implemented . A common implementation of a heap is the binary heap, in which the tree is a binary tree (see figure). The heap data structure, specifically the binary heap, was introduced by J.W.J. Williams in 1964, as a data structure for the heapsort sorting algorithm . Heaps are also crucial in several efficient graph algorithms such as Dijkstra's algorithm . In a heap, the highest (or lowest) priority element is always stored at the root . A heap is not a sorted structure and can be regarded as partially ordered . As visible from the heap - diagram, there is no particular relationship among nodes on any given level, even among the siblings . When a heap is a complete binary tree, it has a smallest possible height--a heap with N nodes always has log N height . A heap is a useful data structure when you need to remove the object with the highest (or lowest) priority . </P>

Which data structure is used for efficient implementation of polynomial adt