Explain Depth First Search Algorithm