Junior — Middle
Turli ma'lumot daraxtlarini yurish uchun qanday usullar mavjud?
sobes.tech AI
AIdan javob
Ma'lumot daraxtlarini yurish odatda quyidagi usullar bilan amalga oshiriladi:
-
Chuqurlik bo'yicha yurish (DFS)
- Pre-Order (ildiz → chap → o'ng)
- In-Order (chap → ildiz → o'ng)
- Post-Order (chap → o'ng → ildiz)
-
Kenglik bo'yicha yurish (BFS)
- tugunlarni darajalar bo'yicha tashrif buyurish, ildizdan boshlash
Go tilida, bu rekursiv yoki stek/navbat yordamida amalga oshirilishi mumkin. Masalan, ikkilamchi daraxt uchun chuqurlik bo'yicha yurish (in-order):
func inOrder(node *Node) {
if node == nil {
return
}
inOrder(node.Left)
fmt.Println(node.Value)
inOrder(node.Right)
}
Kenglik bo'yicha yurish uchun odatda navbat ishlatiladi:
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)
}
}
}