Menu
CoddyTech

Symmetric Tree

Se te proporciona un árbol binario almacenado en el array tree en orden por niveles. La raíz está en el índice 0, los hijos del nodo en el índice i están en 2*i+1 (izquierda) y 2*i+2 (derecha), -1 marca una posición vacía y el array puede terminar con entradas -1 adicionales. Devuelve true si el árbol es una imagen especular de sí mismo respecto a una línea vertical que pasa por la raíz, y false en caso contrario. Tanto la forma como los valores deben coincidir.

Función

isSymmetric(tree: integer-array) → boolean
treeinteger-array
el árbol binario por niveles, con -1 para las posiciones vacías
Devuelveboolean
verdadero si el árbol es simétrico, falso en caso contrario

Restricciones

  • 1 ≤ tree.length ≤ 32767
  • Cada tree[i] es -1 o un valor con 0 ≤ tree[i] ≤ 1000.
  • tree[0] nunca es -1, así que el árbol tiene al menos un nodo.
  • El arreglo 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.

Ejemplos

Entrada
tree = [1, 2, 2, 3, 4, 4, 3]
Salida
true
Explicación
Pliega el árbol por la mitad. Los dos 2 de los índices 1 y 2 se encuentran, los 3 exteriores de los índices 3 y 6 se encuentran, y los 4 interiores de los índices 4 y 5 se encuentran.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

Si la forma se refleja a sí misma, pero algunos valores no, ¿cuál es el menor número de valores de nodos que debes cambiar para que el árbol sea simétrico?

Restablecer código
def isSymmetric(tree):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

tree = [1, 2, 2, 3, 4, 4, 3]

Esperado

true