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