diff --git a/src/Search/DepthFirst.php b/src/Search/DepthFirst.php index 0722d71..55b08cd 100644 --- a/src/Search/DepthFirst.php +++ b/src/Search/DepthFirst.php @@ -2,40 +2,19 @@ namespace Graphp\Algorithms\Search; -use Fhaculty\Graph\Vertex; use Fhaculty\Graph\Set\Vertices; class DepthFirst extends Base { /** + * calculates an iterative depth-first search * - * calculates the recursive algorithm - * - * fills $this->visitedVertices - * - * @param Vertex $vertex + * @return Vertices */ - private function recursiveDepthFirstSearch(Vertex $vertex, array & $visitedVertices) - { - // If I didn't visited this vertex before - if (!isset($visitedVertices[$vertex->getId()])) { - // Add Vertex to already visited vertices - $visitedVertices[$vertex->getId()] = $vertex; - - // Get next vertices - $nextVertices = $vertex->getVerticesEdgeTo(); - - foreach ($nextVertices as $nextVertix) { - // recursive call for next vertices - $this->recursiveDepthFirstSearch($nextVertix, $visitedVertices); - } - } - } - - private function iterativeDepthFirstSearch(Vertex $vertex) + public function getVertices() { $visited = array(); - $todo = array($vertex); + $todo = array($this->vertex); while ($vertex = array_shift($todo)) { if (!isset($visited[$vertex->getId()])) { $visited[$vertex->getId()] = $vertex; @@ -48,19 +27,4 @@ private function iterativeDepthFirstSearch(Vertex $vertex) return new Vertices($visited); } - - /** - * calculates a recursive depth-first search - * - * @return Vertices - */ - public function getVertices() - { - return $this->iterativeDepthFirstSearch($this->vertex); - - $visitedVertices = array(); - $this->recursiveDepthFirstSearch($this->vertex, $visitedVertices); - - return $visitedVertices; - } }