Sobes.tech
Junior — Middle

Кадом усулҳо барои гузаштан аз дарахтони маълумоти гуногун истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Обходи данни дървета обикновено се извършва с помощта на следните методи:

  1. Обход в дълбочина (DFS)

    • Pre-order (корен → лев → десен)
    • In-order (лев → корен → десен)
    • Post-order (лев → десен → корен)
  2. Обход в ширина (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)
        }
    }
}