Junior — Middle
Түрдүү маалымат дарактарын айландыруу үчүн кайсы ыкмаларды колдонсо болот?
sobes.tech AI
AIден жооп
Маалымат дарактарынын жүрүшү адатта төмөнкү ыкмалар менен жүргүзүлөт:
-
Туңгучтуктун тереңдик менен өтүшү (DFS)
- Pre-order (түп → сол → оң)
- In-order (сол → түп → оң)
- Post-order (сол → оң → түп)
-
Кеңдик менен өтүшү (BFS)
- Түйүндөрдү деңгээлдер боюнча кыдырып чыгуу, түптөн баштоо
Go тилинде бул рекурсивдүү же стек/күтүү аркылуу ишке ашырылышы мүмкүн. Мисалы, тереңдик менен өтүш (in-order) үчүн бинардык дарак:
func inOrder(node *Node) {
if node == nil {
return
}
inOrder(node.Left)
fmt.Println(node.Value)
inOrder(node.Right)
}
Кеңдик менен өтүш үчүн көбүнчө кезек колдонулат:
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)
}
}
}