Sobes.tech
Junior — Middle

İkili ağacda elementin axtarış mexanizmini və onun necə keçdiyini izah edin

sobes.tech Süni İntellekt

AI-dan cavab

İkili axtarış ağacında (BST) elementin axtarışı aşağıdakı kimi həyata keçirilir:

  1. Ağacın kökündən başlayırıq.
  2. Axtarılan dəyəri cari düyünlə müqayisə edirik:
    • Əgər dəyər bərabərdirsə, element tapıldı.
    • Əgər dəyər kiçikdirsə, sol alt ağaca keçirik.
    • Əgər dəyər böyükdürsə, sağ alt ağaca keçirik.
  3. Element tapılana qədər və ya boş düyünə çatana qədər prosesi təkrarlayırıq.

İkili ağacın keçid üsulu bütün düyünləri ardıcıllıqla ziyarət etməkdir. Əsas keçid növləri:

  • In-order (simmetrik): sol alt ağac → düyün → sağ alt ağac. Bu, elementləri sıralı şəkildə əldə etməyə imkan verir.
  • Pre-order (əvvəlki): düyün → sol alt ağac → sağ alt ağac.
  • Post-order (sonrakı): sol alt ağac → sağ alt ağac → düyün.

Go dilində axtarış və keçid nümunəsi:

package main
import "fmt"

type Node struct {
    Value int
    Left, Right *Node
}

func (n *Node) Search(val int) *Node {
    if n == nil || n.Value == val {
        return n
    }
    if val < n.Value {
        return n.Left.Search(val)
    }
    return n.Right.Search(val)
}

func (n *Node) InOrder() {
    if n == nil {
        return
    }
    n.Left.InOrder()
    fmt.Print(n.Value, " ")
    n.Right.InOrder()
}

func main() {
    root := &Node{Value: 10}
    root.Left = &Node{Value: 5}
    root.Right = &Node{Value: 15}

    node := root.Search(5)
    if node != nil {
        fmt.Println("Tapılan düyün dəyəri:", node.Value)
    } else {
        fmt.Println("Element tapılmadı")
    }

    fmt.Print("In-order keçid: ")
    root.InOrder() // Çıxış: 5 10 15
}