Menu
CoddyTech

Diameter of Binary Tree

On te donne un arbre binaire stocké dans le tableau tree en parcours par niveaux. 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 position vide et le tableau peut se terminer par des entrées -1 supplémentaires. Retourne le diamètre de l’arbre : le nombre d’arêtes du plus long chemin entre deux nœuds quelconques. Le chemin peut passer par la racine ou rester dans un seul sous-arbre.

Fonction

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
l’arbre binaire dans l’ordre par niveaux, avec -1 pour un emplacement vide
Renvoieinteger
le nombre d’arêtes sur le plus long chemin entre deux nœuds

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 comporte 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 la profondeur est au plus de 14.

Exemples

Entrée
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
Sortie
4
Explication
Le chemin 7, 4, 3, 8, 6 (indices 9, 4, 1, 0, 2) contient cinq nœuds reliés par quatre arêtes. Il tourne à la racine : trois arêtes vers le bas du côté gauche et une vers le bas du côté droit.

lock icon+12 tests cachés à la soumission

challenge icon

Pour aller plus loin

Comment renverrais-tu le chemin lui-même, c’est-à-dire les valeurs des nœuds d’une extrémité du diamètre à l’autre ?

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

Cas 1

Cas 2

Cas 3

Entrée

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

Attendu

4