Sobes.tech
Junior — Middle

Ποια μέθοδοι μπορούν να χρησιμοποιηθούν για την περιήγηση διαφόρων δέντρων δεδομένων;

sobes.tech AI

Απάντηση από AI

Η περιήγηση σε δέντρα δεδομένων πραγματοποιείται συνήθως με τις ακόλουθες μεθόδους:

  1. Βαθύτερη αναζήτηση (DFS)

    • Pre-order (ρίζα → αριστερά → δεξιά)
    • In-order (αριστερά → ρίζα → δεξιά)
    • Post-order (αριστερά → δεξιά → ρίζα)
  2. Ευρεία αναζήτηση (BFS)

    • Επίσκεψη των κόμβων κατά επίπεδα, ξεκινώντας από τη ρίζα

Στη γλώσσα Go, αυτό μπορεί να υλοποιηθεί αναδρομικά ή με τη βοήθεια στοίβας/ουράς. Για παράδειγμα, η βαθειά αναζήτηση (in-order) για ένα δυαδικό δέντρο:

func inOrder(node *Node) {
    if node == nil {
        return
    }
    inOrder(node.Left)
    fmt.Println(node.Value)
    inOrder(node.Right)
}

Για την ευρεία αναζήτηση, συνήθως χρησιμοποιείται ουρά:

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)
        }
    }
}