Junior — Middle
Quais métodos podem ser usados para percorrer diferentes árvores de dados?
sobes.tech IA
Resposta da IA
A travessia de árvores de dados geralmente é realizada pelos seguintes métodos:
-
Travessia em profundidade (DFS)
- Pré-ordem (raiz → esquerdo → direito)
- Em-ordem (esquerdo → raiz → direito)
- Pós-ordem (esquerdo → direito → raiz)
-
Travessia em largura (BFS)
- Visitar os nós por níveis, começando pela raiz
Em Go, isso pode ser implementado recursivamente ou usando uma pilha/fila. Por exemplo, travessia em profundidade (em-ordem) para uma árvore binária:
func inOrder(node *Node) {
if node == nil {
return
}
inOrder(node.Left)
fmt.Println(node.Value)
inOrder(node.Right)
}
Para a travessia em largura, geralmente usa-se uma fila:
func bfs(root *Node) {
if root == nil {
return
}
queue := []*Node{root}
for len(queue) > 0 {
current := queue[0]
queue = queue[1:]
fmt.Println(current.Value)
if current.Left != nil {
queue = append(queue, current.Left)
}
if current.Right != nil {
queue = append(queue, current.Right)
}
}
}