Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

On vous donne un arbre binaire stocké dans le tableau root. La racine se trouve à l’indice 0, les enfants de l’indice i se trouvent aux indices 2*i+1 (à gauche) et 2*i+2 (à droite), -1 indique un emplacement vide, et le tableau peut se terminer par des entrées -1 supplémentaires.

Renvoyez les valeurs des nœuds niveau par niveau, dans un ordre en zigzag : le niveau de la racine de gauche à droite, le suivant de droite à gauche, et ainsi de suite, en alternant jusqu’au niveau le plus profond. Cette méthode est également appelée parcours en spirale par niveaux.

Fonction

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-array
l’arbre en ordre de tas, avec -1 pour une case vide
Renvoieinteger-2d-array
une liste de valeurs par niveau, en commençant par le niveau supérieur, en alternant de gauche à droite et de droite à gauche

Contraintes

  • 1 ≤ root.length ≤ 32767
  • Chaque root[i] vaut -1 ou est une valeur telle que 0 ≤ root[i] ≤ 104.
  • Les valeurs des nœuds sont distinctes.
  • root[0] n'est jamais -1, donc l'arbre contient 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 également vides, et l’arbre comporte au plus 14 niveaux.

Exemples

Entrée
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Sortie
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Explication
En lisant de gauche à droite, les niveaux sont 8 ; 12, 5 ; 1, 9, 14 ; 4, 2, 11. Les niveaux 1 et 3 sont parcourus à l’envers : [5, 12] et [11, 2, 4].
challenge icon

Pour aller plus loin

Peux-tu placer directement chaque valeur à sa place définitive dans sa ligne, sans rien inverser et sans deuxième pile ?

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

Test #1

Test #2

Test #3

Argument

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Résultat attendu

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]