Menu
CoddyTech

Top View of Binary Tree

Recibes un árbol binario almacenado en el arreglo root en orden de montículo: la raíz en el índice 0, los hijos del índice i en 2*i+1 (izquierdo) y 2*i+2 (derecho), y -1 para una posición vacía.

La raíz está en la columna 0; un hijo izquierdo se encuentra una columna a la izquierda de su padre y un hijo derecho, una columna a la derecha. Visto desde arriba, se ve el nodo más superficial de cada columna; en caso de empate, el que aparece primero en su nivel de izquierda a derecha (el índice menor). Devuelve los valores que ves, desde la columna más a la izquierda hasta la más a la derecha.

Función

topView(root: integer-array) → integer-array
rootinteger-array
el árbol en orden de montículo, con -1 para un espacio vacío
Devuelveinteger-array
el valor visto desde arriba en cada columna, empezando por la columna situada más a la izquierda

Restricciones

  • 1 ≤ root.length ≤ 32767
  • Cada root[i] es -1 o un valor con 0 ≤ root[i] ≤ 104, y ningún valor aparece dos veces.
  • root[0] nunca es -1, así que el árbol tiene al menos un nodo.
  • El arreglo puede terminar con elementos adicionales -1 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 = [5, 2, 9, 4, 7, 1, 6]
Salida
[4, 2, 5, 9, 6]
Explicación
De izquierda a derecha, las columnas contienen 4 (columna -2), 2 (-1), la raíz 5 (0), 9 (1) y 6 (2). 7 y 1 también están en la columna 0, pero la raíz está por encima de ellos.
challenge icon

Para ir más allá

Con objetos de nodo en lugar de un arreglo, no hay ningún índice para resolver un empate. ¿Cómo expresarías la regla para los empates y cambiaría tu código de búsqueda en anchura?

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

Prueba #1

Prueba #2

Prueba #3

Argumento

root = [5, 2, 9, 4, 7, 1, 6]

Salida Esperada

[4, 2, 5, 9, 6]