深度优先和广度优先
程序员文章站
2022-03-03 11:18:00
...
深度优先搜索 dfs(depth first search)
一般使用递归实现
void dfs(int index, int level) {
book[level]++;
for (int i = 0; i < node[index].size(); i++) {
dfs(node[index][i], level + 1);
}
}
广度优先搜索 bfs(breadth first search)
一般使用队列实现
queue<int> q;
q.push(1);
level[1] = 1;
while (!q.empty()) {
int index = q.front();
q.pop();
book[level[index]]++;
for (int i = 0; i < node[index].size(); i++) {
level[node[index][i]] = level[index] + 1;
q.push(node[index][i]);
}
}