Menu
CoddyTech

Lowest Common Ancestor of a Binary Tree

Vous recevez un arbre binaire dans le tableau root, dans l’ordre d’un tas : la racine à l’indice 0, les enfants de l’indice i aux indices 2*i+1 (à gauche) et 2*i+2 (à droite), et -1 pour un emplacement vide. Les valeurs sont distinctes et ne suivent aucun ordre.

Retournez la valeur du plus bas ancêtre commun de p et q, les valeurs de deux nœuds différents : le nœud le plus profond dont le sous-arbre contient les deux. Un sous-arbre inclut son nœud racine ; ainsi, si q se trouve sous p, la réponse est p.

Fonction

lowestCommonAncestor(root: integer-array, p: integer, q: integer) → integer
rootinteger-array
l’arbre binaire dans l’ordre par niveaux, avec -1 pour une place vide
pinteger
la valeur d’un nœud
qinteger
la valeur d’un autre nœud
Renvoieinteger
la valeur du nœud le plus bas dont le sous-arbre contient à la fois p et q

Contraintes

  • 2 ≤ root.length ≤ 32767
  • Chaque root[i] vaut -1 ou une valeur telle que 0 ≤ root[i] ≤ 104.
  • root[0] n'est jamais -1, et l'arbre comporte au moins deux nœuds.
  • 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 au plus 14.
  • Toutes les valeurs de l’arbre sont distinctes et ne suivent aucun ordre.
  • p et q sont les valeurs de deux nœuds différents de l’arbre, dans n’importe quel ordre.

Exemples

Entrée
root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]p = 6q = 9
Sortie
3
Explication
6 est le fils gauche de 3, et 9 se trouve sous 4, à droite de 3 : ils se rejoignent donc en 3. Comparer les valeurs désignerait la racine 8 : 6 est plus petit et 9 plus grand.
challenge icon

Pour aller plus loin

Si p ou q peuvent être absents, avec -1 comme réponse, quel raccourci dans le parcours unique ne fonctionne plus, et comment terminer quand même en un seul parcours ?

Réinitialiser le code
def lowestCommonAncestor(root, p, q):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

root = [8, 3, 10, 6, 4, 12, 1, -1, -1, 7, 9]
p = 6
q = 9

Résultat attendu

3