java代码
时间: 2023-07-03 13:25:42 浏览: 26
以下是Java代码实现,假设邻接表的数据结构为`List<List<Integer>> adjList`,起点、终点、经过顶点分别为`int u, v, k`:
```java
public int countPaths(List<List<Integer>> adjList, int u, int v, int k) {
int[] count = new int[1];
boolean[] visited = new boolean[adjList.size()];
visited[u] = true;
dfs(adjList, u, v, k, visited, count);
return count[0];
}
private void dfs(List<List<Integer>> adjList, int curr, int dest, int k, boolean[] visited, int[] count) {
if (curr == k) {
for (int neighbor : adjList.get(k)) {
if (!visited[neighbor]) {
visited[neighbor] = true;
dfs(adjList, neighbor, dest, k, visited, count);
visited[neighbor] = false;
}
}
} else if (curr == dest) {
count[0]++;
} else {
for (int neighbor : adjList.get(curr)) {
if (!visited[neighbor]) {
visited[neighbor] = true;
dfs(adjList, neighbor, dest, k, visited, count);
visited[neighbor] = false;
}
}
}
}
```
其中,count数组用于记录经过顶点k的路径数量,visited数组用于记录每个顶点的访问状态,dfs方法为深度优先搜索算法实现。