欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度优先和广度优先

程序员文章站 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]);
        }
    }
相关标签: bfs dfs 搜索