برای نوشتن DFS به این شکل عمل می کنیم :
1_ یک صف(Queue) میسازیم و بهش مقدار اولیه میدیم
2_ عنصر اول صف رو از صف خارج می کنیم (deque)
3_ عنصر خارج شده رو گشترش میدیم و به اول صف اضافه می کنیم(enque) و اگر قابل گسترش نبود دیگه به صف اضافش نمی کنیم
4_ مرحله 2 به بعد رو تا وقتی که صف خالی نشده تکرار می کنیم
مثال از نحوه کار :
مثال 2 فرض کنید گراف به شکل زیر هست :
و فرض کنید DFS رو از راس A شروع می کنیم مراحل به این شکله :
(A,B),(A,C) ساختن و مقدار اولیه دادن
(A,B,D),(A,B,C),(A,C) گسترش (A,B) , اضافه کردن به اول صف
(A,B,D,E),(A,B,C),(A,C) گسترش (A,B,D) , اضافه کردن به اول صف
(A,B,C),(A,C) گسترش (A,B,D,E) , چون قابل گسترش نیست از صف حذف میشه
(A,C) گسترش (A,C) , چون یکبار قبلا گسترش داده شده از صف حذف میشه
-- تمام
شبه کد این الگوریتم:
procedure DFS-iterative(G,v):
2 let S be a queue
3 S.push(v)
4 while S is not empty
5 v ← S.pop()
6 if v is not labeled as discovered:
7 label v as discovered
8 for all edges from v to w in G.adjacentEdges(v) do
9 S.push(w)