java深度优先搜素
时间: 2024-03-30 13:31:42 浏览: 56
以下是两种Java实现深度优先搜索的例子:
1. 使用递归实现深度优先搜索[^1]:
```java
private static <V> void dfs(TreeNode<V> root, int depth) {
if (root.getLeft() != null){
dfs(root.getLeft(), depth + 1);
}
//打印节点值以及深度
System.out.println(root.getValue().toString() + ", " + depth);
if (root.getRight() != null){
dfs(root.getRight(), depth + 1);
}
}
```
2. 使用非递归实现深度优先搜索(使用栈):
```java
private static <V> void dfs(TreeNode<V> tree, int depth) {
Stack<TreeNode<V>> stack = new Stack<>(); stack.push(tree);
while (!stack.isEmpty()) {
TreeNode<V> node = stack.pop();
//打印节点值以及深度
System.out.println(node.getValue().toString() + ", " + depth);
if (node.getChildList() != null && !node.getChildList().isEmpty()) {
for (TreeNode<V> item : node.getChildList()) {
stack.push(item);
}
}
}
}
```
阅读全文