我想了解一般圖形和樹木的DFS算法是特定的。我注意到對於圖和樹,打印出的節點順序是不同的。圖形和樹之間的DFS差異
在圖中,我們打印父節點,然後打印子節點。
void Graph::DFS(int v)
{
// Mark the current node as visited and print it
visited[v] = true;
cout << v << " ";
// Recur for all the vertices adjacent to this vertex
vector<int>::iterator i;
for (i = adj[v].begin(); i != adj[v].end(); ++i)
if (!visited[*i])
DFS(*i);
}
在樹上,我們打印的子節點首先那麼我想知道爲什麼排序兩者之間不同的父節點
void DFS(struct node *head)
{
if (head)
{
if (head->left)
{
DFS(head->left);
}
if (head->right)
{
DFS(head->right);
}
printf("%d ", head->a);
}
}
。它應該是一樣的嗎?我認爲我對算法的理解是錯誤的。有人可以糾正我嗎?