Menu
CoddyTech

Invert Binary Tree

Recibes un árbol binario almacenado en el arreglo tree en orden por niveles. La raíz se encuentra en el índice 0; los hijos del nodo en el índice i se encuentran en 2*i+1 (izquierda) y 2*i+2 (derecha); -1 marca una posición vacía, y el arreglo puede terminar con entradas adicionales -1.

Invierte el árbol: intercambia los hijos izquierdo y derecho de cada nodo, de modo que todo el árbol se convierta en su imagen especular. Devuelve el árbol invertido en el mismo formato, sin entradas -1 al final.

Función

invertTree(tree: integer-array) → integer-array
treeinteger-array
el árbol binario por niveles, con -1 para indicar una posición vacía
Devuelveinteger-array
el árbol reflejado en orden por niveles, sin entradas -1 al final

Restricciones

  • 1 ≤ tree.length ≤ 16383
  • 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 = [5, 3, 8, 1, 4, -1, 9]
Salida
[5, 8, 3, 9, -1, 4, 1]
Explicación
Los hijos de la raíz, 3 y 8, intercambian lugares. Debajo de ellos, el 1 y el 4 que estaban debajo de 3 vuelven como 4 y 1, y 8, que solo tenía un hijo derecho, 9, ahora lo tiene a su izquierda.

lock icon+14 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Cómo comprobarías si un árbol es su propio reflejo, usando los mismos pares de índices pero sin crear la copia invertida?

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

Caso 1

Caso 2

Caso 3

Entrada

tree = [5, 3, 8, 1, 4, -1, 9]

Esperado

[5, 8, 3, 9, -1, 4, 1]