我对dfs的理解是使用栈(使用队列的bfs)。但是,如果我想遍历dfs中的矩阵。我如何设想这样做?在矩阵中寻找路径的深度优先搜索
假设我有一个矩阵,我想找到一个从左上角到右下角的路径,它只能向下和向右移动。
public void dfsHelper(int[][] matrix, int i, int j){
if (i >= row || j >= col) return;
if (i == row - 1 && j == col - 1) {
return;
}
dfsHelper(matrix, min, i, j + 1);
dfsHelper(matrix, min, i + 1, j);
}
}
上面是一个在线版本的矩阵上的dfs,我只能看到它是一个递归,为什么它是一个dfs?
你为什么认为这不是DFS?换句话说,你认为哪种调用会首先发生 - 'dfsHelper(matrix,0,col)'或'dfsHelper(matrix,1,0)'? –
我看到这是一个递归的例子。它不是搜索任何东西,因为它实际上并不做任何事情,但是递归是一个堆栈(确切地说调用堆栈),所以本质上就是深度优先。 – Andreas
噢,好吧,称之为[深度优先*遍历*](https://en.wikipedia.org/wiki/Depth-first_traversal),那么如果这就是你所挂上的所有东西(维基百科页甚至是重定向到“深度优先搜索”)。你没有特别搜寻任何东西并不重要。 –