Junior — Middle
125
Бинарлы ағаш теңгерімді құрылымдық күй ме?
Сұралған компаниялар
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
}
Таким образом, бинарное дерево может быть как сбалансированным, так и нет, в зависимости от структуры и правил построения.