Menu
CoddyTech

Bottom View of Binary Tree

El arreglo root contiene un árbol binario: 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.

La raíz está en la columna 0; un paso a la izquierda mueve una columna hacia la izquierda, y un paso a la derecha mueve una columna hacia la derecha. Visto desde abajo, cada columna muestra su nodo más profundo y, en caso de empate, el último de ese nivel al leer de izquierda a derecha (el índice mayor). Devuelve los valores que ves, empezando por la columna más a la izquierda.

Función

bottomView(root: integer-array) → integer-array
rootinteger-array
el árbol en orden de montón, con -1 para una posición vacía
Devuelveinteger-array
el valor que se ve desde abajo en cada columna, empezando por la columna 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 entradas 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, 1, 9, 6]
Explicación
La columna 0 contiene 5 y, dos niveles más abajo, 7 (índice 4) y 1 (índice 5). 1 aparece más tarde en el nivel compartido, así que se muestra. Las columnas -2, -1, 1 y 2 contienen 4, 2, 9 y 6.
challenge icon

Para ir más allá

Si un empate en el nivel más profundo de una columna debe devolver todos los nodos empatados, de izquierda a derecha, ¿cómo cambiaría la versión de búsqueda en anchura? ¿Qué devolvería la columna 0 del ejemplo 1?

Restablecer código
def bottomView(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, 1, 9, 6]