Menu
CoddyTech

Boundary Traversal of Binary Tree

Le tableau root contient un arbre binaire en ordre par niveaux : la racine à l’indice 0, les enfants de l’indice i aux indices 2i+1 (à gauche) et 2i+2 (à droite), -1 pour un emplacement vide, et éventuellement des entrées -1 supplémentaires à la fin. Une feuille est un nœud sans enfants.

Renvoie le contour dans le sens antihoraire à partir de la racine :

  1. La racine.
  2. Le bord gauche, de haut en bas : à partir de l’enfant gauche de la racine, passe à l’enfant gauche s’il existe, sinon à l’enfant droit. Arrête-toi avant une feuille.
  3. Toutes les feuilles, de gauche à droite.
  4. Le bord droit, de bas en haut : le miroir du bord gauche, à partir de l’enfant droit de la racine.

Aucun nœud n’est répertorié deux fois ; un arbre à un seul nœud ne donne donc que sa racine.

Fonction

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
l’arbre binaire dans l’ordre par niveau, avec -1 pour une place vide
Renvoieinteger-array
les valeurs aux limites, dans le sens antihoraire à partir de la racine

Contraintes

  • 1 ≤ root.length ≤ 32767
  • Chaque root[i] vaut -1 ou une valeur telle que 0 ≤ root[i] ≤ 105.
  • root[0] n'est jamais -1, donc l'arbre a 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.
  • Les valeurs des nœuds sont distinctes.

Exemples

Entrée
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Sortie
[7, 3, 1, 4, 6, 8, 9]
Explication
Après la racine 7, la frontière gauche est 3 : son enfant 1 est une feuille. Les feuilles sont 1, 4, 6, 8. La frontière droite est 9, au-dessus de la feuille 8.
challenge icon

Pour aller plus loin

Comment énuméreriez-vous la frontière dans le sens horaire : la racine, le bord droit de haut en bas, les feuilles de droite à gauche, puis le bord gauche de bas en haut ?

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

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

[7, 3, 1, 4, 6, 8, 9]