01ჯერ სიღრმეში, მერე უკან
BFS ტალღასავით ვრცელდება; DFS ცნობისმოყვარე მკვლევარივით იქცევა. მიმდინარე წვეროდან გადადის ნებისმიერ მოუნახულებელ მეზობელზე და აგრძელებს. როცა წვეროს მოუნახულებელი მეზობელი აღარ დარჩა, უკან ბრუნდება იმ წვეროში, საიდანაც მოვიდა, და მის შემდეგ მეზობელს ცდის.
ერთსა და იმავე ხეზე BFS წვეროებს დონე-დონე ნომრავს, DFS კი მთელ განშტოებას ამთავრებს, სანამ მეორე მხარეს შეეხება.
ბუნებრივი რეალიზაცია რეკურსიაა, ამიტომ აღრიცხვას გამოძახებების სტეკი აკეთებს: void dfs(int v) { used[v] = true; for (int to : g[v]) if (!used[to]) dfs(to); }. ეს BFS-ია, სადაც რიგი სტეკითაა შეცვლილი. DFS უმოკლეს გზებს არ პოულობს, მაგრამ სტრუქტურას ამჟღავნებს: ციკლებს, კომპონენტებს, ამოცანების რიგს, ხიდებს.