class Graph {
private $graph = [];
// 添加節點
public function addNode($node, $neighbors) {
$this->graph[$node] = $neighbors;
}
// 深度優先搜索算法
public function dfs($startNode, $visited = []) {
echo $startNode . " ";
$visited[$startNode] = true;
foreach ($this->graph[$startNode] as $neighbor) {
if (!$visited[$neighbor]) {
$this->dfs($neighbor, $visited);
}
}
}
}
// 創建一個圖實例
$graph = new Graph();
$graph->addNode(1, [2, 3]);
$graph->addNode(2, [1, 4, 5]);
$graph->addNode(3, [1, 6]);
$graph->addNode(4, [2]);
$graph->addNode(5, [2]);
$graph->addNode(6, [3]);
// 從節點1開始深度優先搜索
$graph->dfs(1);
這段代碼實現了一個Graph類,其中包含添加節點和深度優先搜索算法的方法。通過創建一個圖實例并添加節點,然后從指定的起始節點開始進行深度優先搜索。在搜索過程中,使用遞歸方式遍歷節點的鄰居節點,并標記節點是否已被訪問過,以避免重復訪問。