Menu
CoddyTech

Left View of Binary Tree

Vous obtenez un arbre binaire sous forme du tableau root en ordre de tas : la racine se trouve à l’index 0, les enfants de l’index i se trouvent aux index 2*i+1 (à gauche) et 2*i+2 (à droite), et -1 marque un emplacement vide. Le tableau peut se terminer par des entrées -1 supplémentaires.

Placez-vous à gauche de l’arbre. À chaque niveau, vous voyez un nœud, celui le plus à gauche ; le reste du niveau se cache derrière lui. Renvoyez les valeurs que vous voyez, du niveau supérieur vers le bas.

Fonction

leftView(root: integer-array) → integer-array
rootinteger-array
l’arbre dans l’ordre du tas, avec -1 pour une case vide
Renvoieinteger-array
la valeur la plus à gauche de chaque niveau, en commençant par le niveau supérieur

Contraintes

  • 1 ≤ root.length ≤ 32767
  • Chaque root[i] vaut -1 ou une valeur telle que 0 ≤ root[i] ≤ 104.
  • Les valeurs des nœuds sont distinctes.
  • root[0] n’est jamais -1, donc l’arbre comporte au moins un nœud.
  • Le tableau peut se terminer par des entrées -1 supplémentaires après le dernier nœud.
  • Les deux enfants d'un emplacement vide sont également vides, et l'arbre comporte au plus 14 niveaux.

Exemples

Entrée
root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Sortie
[3, 8, 6, 1]
Explication
8 est une feuille, donc les troisième et quatrième niveaux ne contiennent que 6 (indice 6) et 1 (indice 13), tous deux sous l’enfant droit 5. Tu les vois quand même : [3, 8, 6, 1].
challenge icon

Pour aller plus loin

Le niveau d remplit les index 2^d-1 à 2^(d+1)-2. Peux-tu construire la vue en parcourant ces plages, sans file ni récursion ? Quel est le coût sur un tableau complété par du remplissage ?

Réinitialiser le code
def leftView(root):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

Résultat attendu

[3, 8, 6, 1]