给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
一、解题思路——把一块“区域”看作是一个图,图的个数即是岛屿的个数。难点在于如何把区域内的所有结点都找到,对于这道题用DFS和BFS均可
1.对图进行深度优先遍历(上下左右四个方向为子结点)。当结点不是1(0(海)或者是 已读)的时候,认为这条支路已经到底了,返回到上一层继续深度优先遍历
2.每次遍历都会将当前结点标记为已访问(确保它的子结点不会把它本身当作父结点)
3.遍历完成后,返回。开始下一个结点的遍历。直到遍历完所有可遍历结点
二、源码