Sobes.tech
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.