This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.

For traversing a graph, which is the better way - Breadth First / Depth First? Or is it something related to the problem we are trying to solve? Can someone give few example scenarios where these different strategies are suitable?

Apart from some general scenario, I have a specific example.

Assume there is a graph representing an airline network (where vertices represents the airports and the edges represents the flight paths). If I'm interested to do the following tasks on that graph, which is better - Depth First or Breadth First?

a) To find different possible routes between a pair of cities b) To find the distance of route between some cities. c) To find the shortest path between a pair of cities.