首页 > 其他分享 >BFS

BFS

时间:2022-10-30 22:01:18浏览次数:47  
标签:node 遍历 nullptr BFS push root

概念:

二叉树
什么是BFS?

BFS全称Breadth first search(广度优先遍历)

采用遍历树,按层遍历,辅助一个队列,用来存当前层级的节点

时间

\(O(n)\)

代码实现

遍历树

class demo{
    public:
    void bfs(TreeNode* root){
        if(root==nullptr){
            return;
        }
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            int size = q.size();
            for(int i  = 0;i<size;i++){
                TreeNode* node = q.front();
                q.pop();
                //遍历
                if(node->left!=nullptr){
                    q.push(node->left);
                }
                if(node->right!=nullptr){
                    q.push(node->right);
                }
            }
        }
    }
};

标签:node,遍历,nullptr,BFS,push,root
From: https://www.cnblogs.com/tsqo/p/16842377.html

相关文章

  • 【XSY2498】贪吃蛇(bfs_dfs)
    题面DescriptionInputOutputSampleInput&SampleOutput【样例输入1】45##.....1#@432#....#.【样例输出1】4【样例输入2】44#78#.612.543........
  • Acwing 4708 . 立方体(三维bfs)
    https://www.acwing.com/problem/content/4711/题目没什么难度,但是就是三维有些东西不经常定义记不住。写个题解记录一下吧Acwing1096.地牢大师https://www.acwing.co......
  • spfa和bfs的区别
    \(spfa\)和\(bfs\)的区别\(spfa\)在形式上和\(bfs\)非常类似,不同的是\(bfs\)中一个点出了队列就不可能重新进入队列,但是\(spfa\)中一个点可能在出队列之后再次被放入队列,......
  • BFS最短路径(求x到y的最少计算次数)
     给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y?例如:a=3,b=11:可以通过3*2*2-1,3次操作得到11;a=5,b=8:可以通过(5-1)*2,2次操作得到......
  • BFS--宽搜求最短路径
    1010#S######.#......#..#.#.##.##.#.#........##.##.####....#....#.#######.#....#......####.###.....#...G##是障碍,.是通道,S是起点,G是终点求出最短路径长度......
  • POJ 3278(BFS-搜索范围)
    这题是BFS水的主要是范围0<=n,k<=100000 但是有可能搜到200000……半天功夫才A.programP3278;constmaxn=200000;varn,k,i,j:longint;q,deep:array[1..maxn]of......
  • 水灾 (BFS-先洪水后寻路)
    水灾(sliker)大雨应经下了几天雨,却还是没有停的样子。ksy刚从外地回来,知道不久除了自己家,其他的地方都将会被洪水淹没。ksy的老家可以用一个N*M的地图表示,地图上有五种符号:“.......
  • Nearest Excluded Points ( 转化思想 +多源BFS )
     思路:思路暴力枚举每一个点,暴力做时间会超观察发现:每一个所找的空白点,一定是紧紧挨着红色的点, 于是把这些空白点入队,然后利用bfs,即可搞出来空间用ma......
  • 三维空间的dfs和bfs
    三维空间的dfs和bfs去枚举每一步的6个方向的时候都会用到三个偏移量数组dx[]={1,0,0,-1,0,0};dy[]={0,1,0,0,-1,0};dz[]={0,0,1,0,0,-1};//这样一个for就可以枚举出......
  • 初学bfs
    dfs利用的是栈,bfs利用的是队列如同y总所说的,不需要理解如何用队列实现一个bfs而是跟着y总,告诉我们怎么做,然后我们自己判断一下这种是不是bfs如图:取出的顺序和加入的......