微信小程序点击搜索框提示的内容消失
时间: 2023-09-26 15:06:00 浏览: 43
以下是一个使用Java实现深度优先遍历的示例代码:
```
import java.util.ArrayList;
import java.util.List;
public class DFSTraversal {
private int[][] graph;
private boolean[] visited;
public DFSTraversal(int[][] graph) {
this.graph = graph;
visited = new boolean[graph.length];
}
public List<Integer> traverse(int start) {
List<Integer> result = new ArrayList<>();
dfs(start, result);
return result;
}
private void dfs(int node, List<Integer> result) {
visited[node] = true;
result.add(node);
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
dfs(neighbor, result);
}
}
}
public static void main(String[] args) {
int[][] graph = {
{0, 1, 1, 0},
{1, 0, 0, 1},
{1, 0, 0, 1},
{0, 1, 1, 0}
};
DFSTraversal dfs = new DFSTraversal(graph);
List<Integer> result = dfs.traverse(0);
System.out.println(result); // [0, 1, 3, 2]
}
}
```
在这个示例中,我们定义了一个`DFSTraversal`类来执行深度优先遍历。构造函数接收一个二维数组表示邻接矩阵。我们使用一个布尔数组来跟踪哪些节点已经被访问过。
`traverse`方法接收一个起始节点,创建一个空列表来保存遍历结果,并调用`dfs`方法开始遍历。`dfs`方法首先将当前节点标记为已访问,并将其添加到结果列表中。然后,对于每个未访问过的邻居节点,我们递归调用`dfs`方法。
在`main`方法中,我们创建一个邻接矩阵,然后使用`DFSTraversal`类执行深度优先遍历。遍历结果应该是`[0, 1, 3, 2]`,即从节点0开始,依次访问节点1、3、2。