Junior — Middle
Milyen módszerekkel lehet különböző adatfákat bejárni?
sobes.tech MI
Válasz az MI-től
Az adatszárak bejárása általában a következő módszerekkel történik:
-
Mélységi keresés (DFS)
- Pre-order (gyökér → bal → jobb)
- In-order (bal → gyökér → jobb)
- Post-order (bal → jobb → gyökér)
-
Szélességi keresés (BFS)
- A csomópontok szintek szerint történő látogatása, kezdve a gyökérrel
Go nyelven ez rekurzívan vagy egy verem/lineáris sor segítségével valósítható meg. Például, mélységi keresés (in-order) egy bináris fához:
func inOrder(node *Node) {
if node == nil {
return
}
inOrder(node.Left)
fmt.Println(node.Value)
inOrder(node.Right)
}
A szélességi kereséshez általában sor használata javasolt:
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)
}
}
}