title: Terminology for a priority queue data structure?
body: <p>I've been using a data structure which the original developer called a <code>heap</code>, it's used to implement a priority queue.</p>
  
  <p>While there is a lot written about binary trees, (min/max) heaps seem less well defined <em>(details vary between implementations)</em>.</p>
  
  <p>Some characteristics I've noticed that don't necessarily apply to binary-tree structures.</p>
  
  <ul>
  <li>The same element can be in the queue multiple times without causing complication in execution or implementation.</li>
  <li>Searching <em>(while possible and faster than an exhaustive search)</em>, is not so efficient (since the child elements of each node don't have to be balanced).</li>
  <li>Since searching is not efficient and there is a potential for duplicates, removal may require storing a reference to the <code>node</code>, instead of using a <code>key</code> to look-up the node (which is common practice for binary trees).</li>
  <li><a href="https://stackoverflow.com/questions/46996064/">Changing priorities in the heap is trivial</a>, compared to a binary tree <a href="https://stackoverflow.com/questions/22684024">where it's most common to delete+insert</a>.<br><em>(with a better best case and a worse worst case compared to binary-trees)</em></li>
  </ul>
  
  <p>Is there more detailed terminology for data structures that match these characteristics?<br>Or is it simply a <code>min/max heap</code> which happens to be used as a <code>priority-queue</code>?</p>
  
  <hr>
  
  <p>Note, heres a link to a <a href="https://github.com/ideasman42/raster-retrace/blob/master/src/intern/min_heap/mod.rs" rel="nofollow noreferrer">min-heap</a> that has the characteristics described above.</p>