Junior — Middle
Ποια μέθοδοι μπορούν να χρησιμοποιηθούν για την περιήγηση διαφόρων δέντρων δεδομένων;
sobes.tech AI
Απάντηση από AI
Η περιήγηση σε δέντρα δεδομένων πραγματοποιείται συνήθως με τις ακόλουθες μεθόδους:
-
Βαθύτερη αναζήτηση (DFS)
- Pre-order (ρίζα → αριστερά → δεξιά)
- In-order (αριστερά → ρίζα → δεξιά)
- Post-order (αριστερά → δεξιά → ρίζα)
-
Ευρεία αναζήτηση (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)
}
}
}