lev.append(head.val)#队首节点的值压入本层thislevel-=1res.append(lev)returnres 这题用 BFS 是显而易见的,但其实也可以用 DFS, 如果在面试中能用 DFS 来处理,会是一个很大的亮点。 用DFS 怎么处理呢,我们知道, DFS 可以用递归来实现,其实只要在递归函数上加上一个「层」的变量即可,只要节点属于这一...
dfs(i+1,j,grid); //递归调用,来控制小蛇的方向:左右上下 dfs(i-1,j,grid); dfs(i,j+1,grid); dfs(i,j-1,grid); } 所以在“主函数”中只需找到为“1”的陆地,然后调用DFS让它变成一片海,记录下来调用的次数便是有几个岛屿了 完整代码如下: classSolution {publicintnumIslands(char[][] grid...
用BFS的话,就是3-9-20-15-7的结果。 整体实现来说,就是遍历root再来遍历左右子树,不过与DFS区别的是,这里是借助先进先出的特点,也就是要将前面的先排列出来,不用走到叶子结点才输出。一句话简单来说,BFS就是队列,入队列,出队列; 下面是借助leetcode的题目来巩固这个知识点,上面的图也是这个题的。题目要求...
Python题解 参考 1、题解参考https://leetcode-cn.com/problems/surrounded-regions/solution/bfsdi-gui-dfsfei-di-gui-dfsbing-cha-ji-by-ac_pipe/ 2、优秀题解,有python题解https://leetcode-cn.com/problems/surrounded-regions/solution/dfs-bfs-bing-cha-ji-by-powcai/最后...
这让我想到了leetcode上面经典的一道算法题目Maximum Depth of Binary Tree 题目是这样的: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 比如上面这棵树,最大深度是4。 迭代乃人工,递归方神通 To iterate is human, to recurse, divine ...
解法一,DFS 深度优先搜索 解法二,BFS 广度搜索优先(DFS+临时队列) BFS 的 解法三,UnionFind 并查集(Disjoin Set) Find 函数的解释 Leetcode 新手快速上手100题代码整理:王几行xing:LeetCode 力扣入门100题 (全网新手最友好!) 本体涉及的数据结构:图,或者简单而言,叫二维数组 读题 关键:只考虑上下左右的方向,...
本文为Leetcode学习笔记 队列和广度优先搜索(BFS) 广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径。在本文中,我们提供了一个示例来解释在 BFS 算法中是如何逐步应用队列的。 1. 结点的处理顺序是什么? 在第一轮中,我们处理根结点。在第二轮中,我们处理根结点旁边的结点;在第三轮中,我们处...
这是LeetCode 上的 417. 太平洋大西洋水流问题 ,难度为中等。 Tag : 「DFS」、「BFS」、「多源 BFS」 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。
dfs(newX, newY); } } } // 封装成 inArea 方法语义更清晰 private boolean inArea(int x, int y) { // 等于号不要忘了 return x >= 0 && x < rows && y >= 0 && y < cols; } public static void main(String[] args) {
2.2 DFS 1. 题目 给定一个非空01二维数组表示的网格,一个岛屿由四连通(上、下、左、右四个方向)的 1 组成,你可以认为网格的四周被海水包围。 请你计算这个网格中共有多少个形状不同的岛屿。 两个岛屿被认为是相同的,当且仅当一个岛屿可以通过平移变换(不可以旋转、翻转)和另一个岛屿重合。 代码语言:javascr...