Sobes.tech
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:

  1. Chuqurlik bo'yicha yurish (DFS)

    • Pre-Order (ildiz → chap → o'ng)
    • In-Order (chap → ildiz → o'ng)
    • Post-Order (chap → o'ng → ildiz)
  2. 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)
        }
    }
}