Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Tienes un árbol binario almacenado en el arreglo root. 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 el arreglo puede terminar con entradas -1 adicionales.

Devuelve los valores de los nodos nivel por nivel en orden zigzag: el nivel de la raíz de izquierda a derecha, el siguiente de derecha a izquierda, y así sucesivamente, alternando hasta el nivel más profundo. Esto también se conoce como recorrido en espiral por niveles.

Función

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
el árbol en orden de heap, con -1 para una posición vacía
Devuelveinteger-2d-array
una lista de valores por nivel, primero el nivel superior, alternando entre izquierda a derecha y derecha a izquierda

Restricciones

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] es -1 o un valor con 0 ≤ root[i] ≤ 104.
  • Los valores de los nodos son distintos.
  • root[0] nunca es -1, así que el árbol tiene al menos un nodo.
  • La matriz 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 el árbol tiene como máximo 14 niveles.

Ejemplos

Entrada
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Salida
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Explicación
Leídos de izquierda a derecha, los niveles son 8; 12, 5; 1, 9, 14; 4, 2, 11. Los niveles 1 y 3 se recorren hacia atrás: [5, 12] y [11, 2, 4].
challenge icon

Para ir más allá

¿Puedes colocar cada valor directamente en su lugar final de su fila, sin invertir nada ni usar una segunda pila?

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

Prueba #1

Prueba #2

Prueba #3

Argumento

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Salida Esperada

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]