Recall the State Space Search Algorithm

Search(s)
   d[s] = 0
   pred[s] = null
   DEQ = {s}
   V = {s}
   while DEQ ≠ {} do
      u = Remove[DEQ]
      if success(u) 
         then return u
      for each v ∈ expand(u) do
         if v ∉ V
            then put v in V
                 d[v] = d[u] + 1
                 pred[v] = u
                 Add(DEQ,v)
   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?