Menu
CoddyTech

Boundary Traversal of Binary Tree

El arreglo root contiene un árbol binario en orden por niveles: la raíz en el índice 0, los hijos del índice i en 2i+1 (izquierda) y 2i+2 (derecha), -1 para una posición vacía y posiblemente entradas -1 adicionales al final. Una hoja es un nodo sin hijos.

Devuelve el contorno en sentido antihorario desde la raíz:

  1. La raíz.
  2. El contorno izquierdo, de arriba abajo: desde el hijo izquierdo de la raíz, avanza al hijo izquierdo si lo hay; de lo contrario, al hijo derecho. Detente antes de una hoja.
  3. Todas las hojas, de izquierda a derecha.
  4. El contorno derecho, de abajo arriba: el reflejo del izquierdo, desde el hijo derecho de la raíz.

Ningún nodo se enumera dos veces, así que un árbol de un solo nodo contiene únicamente su raíz.

Función

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
el árbol binario en orden por niveles, con -1 para una posición vacía
Devuelveinteger-array
los valores límite, en sentido antihorario desde la raíz

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.
  • 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.
  • Los valores de los nodos son distintos.

Ejemplos

Entrada
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Salida
[7, 3, 1, 4, 6, 8, 9]
Explicación
Después de la raíz 7, el límite izquierdo es 3: su hijo 1 es una hoja. Las hojas son 1, 4, 6, 8. El límite derecho es 9, por encima de la hoja 8.
challenge icon

Para ir más allá

¿Cómo enumerarías el límite en sentido horario: la raíz, el borde derecho de arriba abajo, las hojas de derecha a izquierda y después el borde izquierdo de abajo arriba?

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

Prueba #1

Prueba #2

Prueba #3

Argumento

root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]

Salida Esperada

[7, 3, 1, 4, 6, 8, 9]