Aqui está o pseudocódigo padrão para a primeira pesquisa de largura:
{ seen(x) is false for all x at this point }
push(q, x0)
seen(x0) := true
while (!empty(q))
x := pop(q)
visit(x)
for each y reachable from x by one edge
if not seen(y)
push(q, y)
seen(y) := true
Aqui push
e pop
são consideradas operações de fila. Mas e se forem operações de pilha? O algoritmo resultante visita os vértices em ordem de profundidade primeiro?
Se você votou no comentário "isso é trivial", peço que explique por que é trivial. Acho o problema bastante complicado.
pop
para uma operação de pilha ou fila, tenhamos dfs ou bfs. Também é fácil escrever pseudocódigo para o qual, a princípio, parece que isso é verdade, mas não é. ics.uci.edu//~eppstein/161/960215.html é uma referência relevante.