如何在 Go 中使用函数对数据结构进行深度优先遍历
深度优先遍历 (DFS) 是一种遍历树或图的数据结构的算法。它通过递归或栈来遍历数据结构中的每个节点,直到访问所有节点。
代码实现
Go 中使用函数进行 DFS 可以通过递归或迭代的方式实现。以下是一个使用递归的示例:
立即学习“go语言免费学习笔记(深入)”;
func DFS(node *Node) {
// 访问当前节点
fmt.Println(node.Value)
// 递归访问子节点
for _, child := range node.Children {
DFS(child)
}
}
以下是一个使用迭代的示例:
func DFS(node *Node) {
stack := []*Node{node}
for len(stack) > 0 {
// 获取栈顶元素
node := stack[len(stack)-1]
stack = stack[:len(stack)-1]
// 访问当前节点
fmt.Println(node.Value)
// 压入子节点
for _, child := range node.Children {
stack = append(stack, child)
}
}
}
实战案例
考虑以下二叉树:
1
/
2 3
/ /
4 5 6 7
使用递归的 DFS 算法遍历该树将打印以下输出:
1
2
4
5
3
6
7
使用迭代的 DFS 算法遍历该树将打印相同的输出。
结束