Depth First Search Definition