搜索问题

搜索问题可以用 BFS 或者 DFS,都有相应的模板。

BFS

BFS使用队列,把每个还没有搜索到的点一次放入队列,然后再弹出队列的头部元素当做当前遍历点。

  1. 如果不需要确定当前遍历到了哪一层,BFS模板如下。
    while queue 不空:
     cur = queue.pop()
     for 节点 in cur的所有相邻节点:
         if 该节点有效且未访问过:
             queue.push(该节点)
  2. 如果要确定当前遍历到了哪一层,BFS模板如下。这里增加了level表示当前遍历到二叉树中的哪一层了,也可以理解为在一个图中,现在已经走了多少步了。size表示在开始遍历新的一层时,队列中有多少个元素,即有多少个点需要向前走一步。
    level = 0
    while queue 不空:
     size = queue.size()
     while (size --) {
         cur = queue.pop()
         for 节点 in cur的所有相邻节点:
             if 该节点有效且未被访问过:
                 queue.push(该节点)
     }
     level ++;
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务