Sobes.tech
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:

  1. Travessia em profundidade (DFS)

    • Pré-ordem (raiz → esquerdo → direito)
    • Em-ordem (esquerdo → raiz → direito)
    • Pós-ordem (esquerdo → direito → raiz)
  2. 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)
        }
    }
}