Menu
CoddyTech

Binary Tree Level Order Traversal

Vous disposez d’un arbre binaire stocké dans le tableau tree. La racine se trouve à l’index 0, les enfants du nœud à l’index i se trouvent aux index 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 : une liste contenant la valeur de la racine, puis une liste contenant les valeurs du niveau suivant, de gauche à droite, et ainsi de suite jusqu’au niveau le plus profond.

Fonction

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
l’arbre dans l’ordre du tas, avec -1 pour un emplacement vide
Renvoieinteger-2d-array
une liste de valeurs par niveau, en commençant par le niveau supérieur, chacune de gauche à droite

Contraintes

  • 1 ≤ tree.length ≤ 32767
  • Chaque tree[i] vaut -1 ou une valeur telle que 0 ≤ tree[i] ≤ 1000.
  • tree[0] n’est jamais -1, donc l’arbre contient 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 la profondeur est d’au plus 14.

Exemples

Entrée
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Sortie
[[4], [9, 2], [6, 8, 5], [3]]
Explication
La racine 4 a pour enfants 9 et 2 aux index 1 et 2. L’index 3 est vide, donc le troisième niveau contient 6 (index 4, sous 9), puis 8 et 5 (aux index 5 et 6, sous 2). Le 3 à l’index 9 est l’enfant gauche de 6, seul au quatrième niveau.

lock icon+15 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu renvoyer les niveaux en zigzag, le premier de gauche à droite, le deuxième de droite à gauche, et ainsi de suite, sans trier aucun niveau ?

Réinitialiser le code
def levelOrder(tree):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

Attendu

[[4], [9, 2], [6, 8, 5], [3]]