java代码如何实现深度优先算法
时间: 2023-03-12 11:09:29 浏览: 60
Java代码实现深度优先算法可以使用递归实现。
例如,下面是一个使用深度优先算法遍历二叉树的示例代码:
```
// Definition for a binary tree node.
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public void dfs(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
dfs(root.left);
dfs(root.right);
}
```
这段代码中,我们首先判断根节点是否为空,如果为空,则结束递归。然后访问根节点,再递归访问左子树和右子树。
相关问题
Java实现深度优先搜索算法的代码
如果您想要实现深度优先搜索算法,可以参考以下Java代码:public int DFS(TreeNode root, int target) {
if (root == null) return -1;
if (root.val == target) return 0;
int left = DFS(root.left, target);
int right = DFS(root.right, target);
if (left == -1 && right == -1) return -1;
return Math.max(left, right) + 1;
}
用java写深度优先算法
以下是用 Java 实现深度优先搜索算法的示例代码:
```java
import java.util.*;
public class DFS {
public static void main(String[] args) {
int[][] graph = { { 0, 1, 1, 0, 0, 0 },
{ 1, 0, 0, 1, 1, 0 },
{ 1, 0, 0, 0, 0, 1 },
{ 0, 1, 0, 0, 0, 1 },
{ 0, 1, 0, 0, 0, 1 },
{ 0, 0, 1, 1, 1, 0 } };
boolean[] visited = new boolean[graph.length];
dfs(graph, visited, 0);
}
public static void dfs(int[][] graph, boolean[] visited, int start) {
visited[start] = true;
System.out.print(start + " ");
for(int i = 0; i < graph.length; i++) {
if(graph[start][i] == 1 && !visited[i]) {
dfs(graph, visited, i);
}
}
}
}
```
在此示例中,我们使用一个邻接矩阵表示图形,并定义一个 `visited` 数组来跟踪每个节点是否被访问过。在 `dfs` 方法中,我们首先将当前节点标记为已访问,并输出它的值。然后,我们遍历与该节点相邻的所有节点,并对未访问的节点递归调用 `dfs` 方法。
以上就是一个简单的用 Java 实现深度优先搜索算法的示例。