Junior — Middle
¿Es un árbol binario una estructura equilibrada?
sobes.tech AI
Respuesta de la IA
Un árbol binario en sí mismo no necesariamente es una estructura equilibrada. Un árbol binario equilibrado es aquel en el que las alturas de los subárboles izquierdo y derecho de cada nodo difieren como mucho en 1. Esta propiedad garantiza un acceso, inserción y eliminación eficientes.
Si un árbol binario no está equilibrado, en el peor de los casos puede convertirse en una estructura similar a una lista enlazada, lo que deteriora el rendimiento de las operaciones.
Ejemplo de comprobación de equilibrio en 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
}
Por lo tanto, un árbol binario puede ser tanto equilibrado como no, dependiendo de su estructura y las reglas de construcción.