This algorithm does a great job of traversing the nodes in a graph.
Dictionary visited = new Dictionary(); Queue
Since you're not tracking the path to the "current" node at all times you will have to construct that when you have found the target. If your Node class have a Parent property you could easily backtrack up the tree to construct the full path.