Menu
CoddyTech

Symmetric Tree

On vous donne un arbre binaire stocké dans le tableau tree en ordre par niveau. 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 un emplacement vide, et le tableau peut se terminer par des entrées -1 supplémentaires. Renvoyez true si l’arbre est son propre reflet par rapport à une ligne verticale passant par la racine, et false sinon. La forme et les valeurs doivent toutes deux correspondre.

Fonction

isSymmetric(tree: integer-array) → boolean
treeinteger-array
l’arbre binaire par ordre de niveau, avec -1 pour une place vide
Renvoieboolean
true si l’arbre est symétrique, false sinon

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 possède 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 = [1, 2, 2, 3, 4, 4, 3]
Sortie
true
Explication
Pliez l’arbre en deux au milieu. Les deux 2 aux index 1 et 2 se rejoignent, les 3 extérieurs aux index 3 et 6 se rejoignent, et les 4 intérieurs aux index 4 et 5 se rejoignent.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

Si la forme est symétrique, mais que certaines valeurs ne le sont pas, quel est le nombre minimal de valeurs de nœuds à modifier pour rendre l’arbre symétrique ?

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

Cas 1

Cas 2

Cas 3

Entrée

tree = [1, 2, 2, 3, 4, 4, 3]

Attendu

true