Using a Queue to search a maze by Breadth First Search If Start cell == Goal cell, done! enQueue() Start cell on Queue Mark Start cell as visited with Distance=0; While Queue is not empty do: current= Queue.deQueue() dist=current.Distance For all N-E-S-W UNVISITED neighbors do: if neighbor == Goal, done else enQueue() neighbor on Queue with Distance = dist + 1 and mark neighbor as visited Initial Grid: -------------------------------- | | G | | X | X | X | X | X | -------------------------------- | | X | | X | X | X | X | X | -------------------------------- | | S | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | X | X | X | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- queue is (2,1) queue is (3,1) (2,2) (2,0) queue is (2,2) (2,0) (3,2) (3,0) queue is (2,0) (3,2) (3,0) (1,2) queue is (3,2) (3,0) (1,2) (1,0) queue is (3,0) (1,2) (1,0) queue is (1,2) (1,0) queue is (1,0) (0,2) queue is (0,2) (0,0) Grid with Distances: -------------------------------- | 3 | G | 3 | X | X | X | X | X | -------------------------------- | 2 | X | 2 | X | X | X | X | X | -------------------------------- | 1 | S | 1 | X | X | X | X | X | -------------------------------- | 2 | 1 | 2 | X | X | X | X | X | -------------------------------- | X | X | X | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- Grid with Final Path: -------------------------------- | * | G | 3 | X | X | X | X | X | -------------------------------- | * | X | 2 | X | X | X | X | X | -------------------------------- | * | S | 1 | X | X | X | X | X | -------------------------------- | 2 | 1 | 2 | X | X | X | X | X | -------------------------------- | X | X | X | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | -------------------------------- | | | | X | X | X | X | X | --------------------------------