Sobes.tech
Junior — Middle
125

Бинарлы ағаш теңгерімді құрылымдық күй ме?

Сұралған компаниялар
OZONOZON

AI-дан жауап

sobes.tech AI

Бинарное дерево само по себе не обязательно является сбалансированным структурным состоянием. Сбалансированное бинарное дерево — это такое дерево, в котором высоты левого и правого поддеревьев для каждой вершины отличаются не более чем на 1. Это свойство обеспечивает эффективный доступ, вставку и удаление элементов.

Если бинарное дерево не сбалансировано, то в худшем случае оно может превратиться в структуру, похожую на связный список, что ухудшит производительность операций.

Пример проверки сбалансированности в Go (упрощённо):

func isBalanced(root *TreeNode) bool {
    if root == nil {
        return true
    }
    leftHeight := height(root.Left)
    rightHeight := height(root.Right)
    if abs(leftHeight - rightHeight) > 1 {
        return false
    }
    return isBalanced(root.Left) && isBalanced(root.Right)
}

func height(node *TreeNode) int {
    if node == nil {
        return 0
    }
    leftHeight := height(node.Left)
    rightHeight := height(node.Right)
    if leftHeight > rightHeight {
        return leftHeight + 1
    }
    return rightHeight + 1
}

func abs(a int) int {
    if a < 0 {
        return -a
    }
    return a
}

Таким образом, бинарное дерево может быть как сбалансированным, так и нет, в зависимости от структуры и правил построения.