learn Depth First Search