BFS

作者: Luckywinner | 来源:发表于2023-02-04 23:34 被阅读0次

1.简介

BFS是Breadth First Search,中文翻译为宽度有限搜索。主要是出现在二叉树、数组(棋盘)和图(拓扑排序)中的宽度搜索。


2.适用场景

① 图的遍历 

图的遍历主要涉及层级遍历、连通性和拓扑排序3个方面。

层级遍历:是指可以将二叉数、数据和图分为多层,并按照每层元素的顺序进行遍历。

连通性:例如判断图是否连通,图的两个节点是否有可项链的路线。

拓扑排序 :举例一个拓扑图是否可以根据需求,走出相应的路线,即为拓扑排序。

② 求简单图的最短路径 

简单图为无环和平行边的图。

可将图中的点分为多层,最短路径即为找到的target在第几层。

3.例题

题目

解析:

题解图示

根据二叉树序列化的数据,可以画出二叉树的结构,如上图所示。BFS的思路流程为遍历二叉树的每一层。第一次遍历level 0,将root根节点放入队列中,然后开始判断队列中是否有元素,有元素则执行相应的task(在本题中为记录使用过的颜色),执行完毕后,若左右子节点存在则添加至队列中,最后在将该节点pop出去。


代码:

```

/**

* Definition for a binary tree node.

* public class TreeNode {

*    int val;

*    TreeNode left;

*    TreeNode right;

*    TreeNode(int x) { val = x; }

* }

*/

class Solution {

    public int numColor(TreeNode root) {

        Set<Integer> numSet = new HashSet<Integer>();

        if (root == null) {

            return numSet.size();

        }

        Queue<TreeNode> queue = new LinkedList<TreeNode>();

        queue.offer(root);

        while (!queue.isEmpty()) {

            int queueSize = queue.size();

            for (int i = 0; i < queueSize; i++) {

                TreeNode node = queue.poll();

                numSet.add(node.val);

                if(node.left != null){

                    queue.offer(node.left);

                }

                if(node.right != null){

                    queue.offer(node.right);

                }

            }

        }

        return numSet.size();

    }

}

```

相关文章

  • 走迷宫(BFS例题)

    BFS例题---走迷宫 BFS对应数据结构queue BFS算法时间复杂度O(n^2) BFS算法不走走过的点 的...

  • 什么时候用BFS,什么时候用DFS

    参考什么时候用dfs,什么时候用bfs 参考什么时候用DFS,什么时候用BFS? BFS的缺点适用情况 BFS的一...

  • Binary Tree(2)

    BFS vs DFS for Binary Tree What are BFS and DFS for Binar...

  • BFS/DFS python模板与实现

    BFS BFS在搜索完第k层的节点之前,是不会搜索第k+1层的节点的。 BFS原理 BFS所用的是队列。把每个还没...

  • Chapter12—搜索—广搜

    1. 题目列表 POJ3126(BFS) POJ3087(BFS) POJ3414(BFS+路径打印) 2. 广搜...

  • BFS及其应用

    内容概要: BFS类的实现 BFS求解连通分量 BFS求解无向图点对之间的一条最短路径 BFS判定无环图和二分图 ...

  • 8.19 - hard - 64

    317 . Shortest Distance from All Buildings 典型的BFS的题目,BFS可...

  • H - 8 HDU - 1495

    BFS

  • BFS与DFS总结

    BFS判断连通性 DFS判断连通性 BFS最优解(不走重复路径) BFS最优解(走重复路径) DFS回溯(不走重复...

  • 同模BFS+DFS in Tree and Graph 2020

    BFS BFS基于队列,层层遍历每个节点只访问了一次,时间复杂度O(N) 关于Tree的BFS:首先root节点入...

网友评论

      本文标题:BFS

      本文链接:https://www.haomeiwen.com/subject/deiohdtx.html