Un heap (o meglio d-heap) è una struttura dati che può risultare efficiente con alcuni algoritmi di ordinamento (HeapSort). Un heap binario è un heap con soli due figli (cioè un 2-heap). Tra l'altro un d-heap è una coda con priorità in quanto nella costruzione di un heap si mantiene nella radice sempre il minimo (o il massimo) e ogni nodo ha una chiave <= a quella dei figli (con il massimo si ha >=). In pratica una coda con priorità è una struttura dati che mantiene gli elementi con una priorità basata su una chiave che proviene da un insieme totalmente ordinato (altre code con priorità sono gli heap binomialie quelli di fibonacci che sono mooooolto efficienti in senso ammortizzato). Le code con priorità hanno un ruolo determinante per l'efficienza di alcuni algoritmi sui grafi.
Una coda normale non ha nulla a che vedere con una coda con priorità, non è altro che una "serie" di elementi per cui gli inserimenti (push) avvengono da un lato e le eliminazioni (pop) avvengono dall'altro (questo modo di procedere si chiama FIFO (First In First Out). Tipo la coda che fai alla banca, gli utenti si inseriscono alla fine della fila e ne escono all'inizio.