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:
- Ağacın kökündən başlayırıq.
- 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.
- 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
}