Junior — Middle
Koje metode možete koristiti za obilazak različitih stabala podataka?
sobes.tech АИ
Одговор од АИ
Обилазак података у дрвећима обично се извршава следећим методама:
-
Дубински преглед (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)
}
}
}