Menu
CoddyTech

Balanced Binary Tree

El array root contiene un árbol binario. La raíz está en el índice 0, los hijos del índice i están en 2*i+1 (izquierda) y 2*i+2 (derecha), -1 marca una posición vacía y puede haber entradas adicionales -1 al final.

Devuelve true si el árbol está equilibrado en altura, lo que significa que en cada nodo las alturas de los subárboles izquierdo y derecho difieren como máximo en 1, y false en caso contrario. La altura de un subárbol es el número de nodos en su camino descendente más largo; un subárbol vacío tiene altura 0.

Función

isBalanced(root: integer-array) → boolean
rootinteger-array
el árbol binario en orden por niveles, con -1 para una posición vacía
Devuelveboolean
true si las alturas de los dos subárboles de cada nodo difieren como máximo en 1, false en caso contrario

Restricciones

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] es -1 o un valor con 0 ≤ root[i] ≤ 105.
  • root[0] nunca es -1, así que el árbol tiene al menos un nodo.
  • The array puede terminar con entradas -1 adicionales después del último nodo.
  • Ambos hijos de un espacio vacío también están vacíos, y la profundidad es como máximo 14.
  • Los valores de los nodos son distintos.

Ejemplos

Entrada
root = [5, 2, 9, -1, -1, 7, 11]
Salida
true
Explicación
El subárbol izquierdo de la raíz es el nodo único 2, de altura 1. Su subárbol derecho 9, 7, 11 tiene altura 2. Difieren en 1, y todos los demás nodos tienen dos subárboles de la misma altura.
challenge icon

Para ir más allá

¿Puedes recorrer el árbol sin recursión, usando una pila explícita?

Restablecer código
def isBalanced(root):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

root = [5, 2, 9, -1, -1, 7, 11]

Salida Esperada

true