
BFS
Forward in time
永不停止前进
展开
-
Oh Those Rollers(典型BFS)
不了解BFS的同学只会用DFS,嘻嘻,我当时拿到这道题一想就是用dfs找连通终点,但是忽略的如果有环怎么办呢?最后队友提醒我了,分层次遍历什么意思呢?(以前我明明看过啊哈算法的BFS 但是没怎么理解,但是现在我理解了,而且我发现bfs很有用对于层次搜索!!) 就这道题来说: 如果是这样的齿轮呢?那么应该输出什么?我当时就用的dfs结果输出的就是D点(因为我是按照题上输出顺序遍历的),很明显我的想...原创 2019-08-08 17:39:12 · 209 阅读 · 0 评论 -
迷宫问题(BFS+记录路径+stack+回溯)
这道题如果说求最短路径的话到时很简单;但是记录路径,我就很懵逼了; 我想了半天也不知道怎么记录路径,结果百度一下,大佬们用的二维Node数组记录父节点,确实厉害!!! 首先来理解一下什么是BFS吧; 如图: 注意这里我自己给的节点编号顺序不能变哦; 那么BFS思路呢就是这样滴(建议这里自己手写一下理解): 首先把1节点进入队列;然后扫一遍1节点能到达的节点也就是2和3(依次进队),那么用一个数...原创 2019-08-16 16:19:28 · 1948 阅读 · 0 评论 -
The Chivalrous Cow(BFS+最短路径)
这个题的意思就是给一个图;然后*是阻碍物,H是终点;K是起点;因为这头牛可以这样走: 这倒是很像象棋的马走日;其实一个迷宫就是一个图;只是把(x,y)映射为了一个节点而已 如果这头牛遇到障碍物就不能走;所以明显dfs或者bfs去找最短路径;我其实开头用的是dfs,但是调了半天也不知道为什么过不了; 之后改为BFS就过了;BFS主要一点就在于这个问题:如果去记录路数; 其实如果你真的理解了BF...原创 2019-08-26 13:18:38 · 455 阅读 · 0 评论 -
分行从上往下打印二叉树(BFS+一维队列)
其实这个题要求 每一层从左往右打印,其实很容易想到BFS算法,这个算法不就是用来层次遍历的吗?如果你对BFS很熟悉的话;但是在写的时候会有个问题,我平常写的都是一个队列出去,但是我发现一个队列肯定不行,所以我想了一下,用一维队列,思路就是把第一层的放在q[0]队列中,然后找与q[0]队列节点链接的子节点,然后把下一层的子节点按照从左往右放入q[1]中,什么时候队列+1呢?如果上一层size()=...原创 2019-08-29 21:40:15 · 156 阅读 · 0 评论 -
不分行从上往下打印二叉树(BFS)
这道题也是BFS来找的,而且这道题更简单;BFS基本思想: 这就是BFS的基本思想;不过我还是感觉如果能动态的才更好理解; AC代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * ...原创 2019-08-29 21:46:01 · 134 阅读 · 0 评论