Advertisement

[LeetCode][DFS]深度优先搜索算法总结

阅读量:

该算法常见地采用递归方式实现其核心逻辑。在函数调用开始前需设定一个终止条件以便程序流程有明确退出点随后进入深度优先探索阶段即可完成整个搜索过程为避免重复访问同一节点需为每个被访问过的节点创建一个标记位从而能够精准识别哪些节点已经被彻底探索过哪些则仍处于待开发状态这样既可有效防止无限循环又能保证搜索效率最终详细展示该算法的具体实现过程如图所示而与之相关的树形数据结构问题则将在专门讨论树的博客中系统阐述

200.岛屿数量

考虑一个包含由数字1表示陆地与0表示水的二维网格结构。你的任务是确定该网格中独立岛屿的数量。每个岛屿均被水所环绕,并在其上下左右相邻的位置上与至少一个陆地区域相连。此外,请注意假设该网格的所有边界边缘都被水所覆盖。

输入:
11110
11010
11000
00000

输出: 1

输入:
11000
11000
00100
00011

输出: 3

遍历整个二维网格区域。若某个节点的值为1,则开始执行深度优先搜索。将已访问过的节点标记为0,并统计执行深度优先搜索的起始节点数量作为岛屿总数。在一次DFS过程中,在遇到超出边界或者当前节点值为1的情况下则停止该过程,并向四周未被访问且值不为0的相邻节点继续延伸

复制代码
 class Solution {

    
     public int numIsland

全部评论 (0)

还没有任何评论哟~