Add Depth First Search and unit tests