Recall the State Space Search Algorithm

Search(s,adder)
   d[s] = 0
   pred[s] = null
   DEQ = {s}
   while DEQ ≠ {} do
      u = Remove[DEQ]
      if success
         then return u
      else
         for each v ∈ Expand(u) do
             Add(DEQ,v,adder)
   return null

The algorithm uses a double-ended queue DEQ and adds at the end or front in order to perform breadth-first or depth-first search, respectively.

Q: What sort of structure is required to store and deliver states with the lowest heuristic values first?