Menu
CoddyTech

Binary Tree Right Side View

Le tableau root contient un arbre binaire. La racine se trouve à l’indice 0, les enfants du nœud à l’indice i se trouvent aux indices 2*i+1 (à gauche) et 2*i+2 (à droite), -1 indique une place vide, et des entrées -1 supplémentaires peuvent se trouver à la fin.

Regarde l’arbre depuis son côté droit. À chaque niveau, tu vois exactement un nœud, celui qui est le plus à droite, et les autres sont masqués. Énumère ces valeurs depuis le niveau de la racine jusqu’au niveau le plus profond.

Fonction

rightSideView(root: integer-array) → integer-array
rootinteger-array
l’arbre en ordre de tas, avec -1 pour une case vide
Renvoieinteger-array
la valeur la plus à droite 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 possède au moins un nœud.
  • L’array peut se terminer par des entrées -1 supplémentaires après le dernier nœud.
  • Les deux enfants d'un emplacement vide sont eux aussi vides, et l'arbre comporte au plus 14 niveaux.

Exemples

Entrée
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
Sortie
[5, 9, 1, 3]
Explication
Depuis la droite, tu vois 5, 9 et 1 (index 6). Le quatrième niveau ne contient que 3, à l’index 8 sous 7 dans le sous-arbre gauche. Rien à droite n’atteint cette profondeur, donc 3 est visible.
challenge icon

Pour aller plus loin

Comment obtiendriez-vous la vue de droite d’un arbre dans lequel chaque nœud peut avoir un nombre quelconque d’enfants, stockés dans une liste de gauche à droite ?

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

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

[5, 9, 1, 3]