Junior — Middle
107
Бинарлы ағашта элементті іздеу механизмі мен оның айналымы қалай жүзеге асатынын түсіндіріңіз.
Сұралған компаниялар
kode.ru
AI-дан жауап
sobes.tech AI
Бинарлы іздеу ағашында (BST) элементті іздеу келесідей жүзеге асырылады:
- Ағаштың түбірінен бастаймыз.
- Ізделетін мәнді ағымдағы түйінмен салыстырамыз:
- Егер мән тең болса, элемент табылды.
- Егер мән кіші болса, сол жақ бұтаққа өтеміз.
- Егер мән үлкен болса, оң жақ бұтаққа өтеміз.
- Процесті қайталаймыз, элемент табылмайынша немесе бос түйінге жеткенше (элемент жоқ).
Бинарлы ағашты обход — барлық түйіндерді ретімен аралау тәсілі. Негізгі түрлері:
- In-order (симметриялық): сол жақ бұтақ → түйін → оң жақ бұтақ. Бұл сұрыпталған тәртіпте элементтерді алуға мүмкіндік береді.
- Pre-order (тікелей): түйін → сол жақ бұтақ → оң жақ бұтақ.
- Post-order (кері): сол жақ бұтақ → оң жақ бұтақ → түйін.
Go тілінде іздеу және обход мысалы:
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("Табылған түйіннің мәні:", node.Value)
} else {
fmt.Println("Элемент табылмады")
}
fmt.Print("In-order обход: ")
root.InOrder() // Нәтиже: 5 10 15
}