Junior — Middle
Uma árvore binária é um estado estrutural equilibrado?
sobes.tech IA
Resposta da IA
Uma árvore binária por si só não é necessariamente uma estrutura equilibrada. Uma árvore binária equilibrada é aquela em que as alturas dos subárvores esquerdo e direito de cada nó diferem no máximo em 1. Esta propriedade garante acesso, inserção e remoção eficientes.
Se uma árvore binária não estiver equilibrada, no pior caso, ela pode transformar-se numa estrutura semelhante a uma lista ligada, o que prejudica o desempenho das operações.
Exemplo de verificação de equilíbrio em Go (de forma simplificada):
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
}
Portanto, uma árvore binária pode ser tanto equilibrada quanto não, dependendo da sua estrutura e das regras de construção.