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?