Menu
CoddyTech

Diameter of Binary Tree

Ti viene dato un albero binario memorizzato nell’array tree in ordine per livelli. La radice si trova all’indice 0, i figli del nodo all’indice i si trovano agli indici 2*i+1 (a sinistra) e 2*i+2 (a destra), -1 indica una posizione vuota e l’array può terminare con ulteriori voci -1. Restituisci il diametro dell’albero: il numero di archi nel percorso più lungo tra due nodi qualsiasi. Il percorso può passare per la radice oppure rimanere all’interno di un sottoalbero.

Funzione

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
l'albero binario in ordine per livelli, con -1 per una posizione vuota
Restituisceinteger
il numero di archi del percorso più lungo tra due nodi

Vincoli

  • 1 ≤ tree.length ≤ 32767
  • Ogni tree[i] è -1 oppure un valore con 0 ≤ tree[i] ≤ 1000.
  • tree[0] non è mai -1, quindi l'albero ha almeno un nodo.
  • L'array può terminare con voci -1 aggiuntive dopo l'ultimo nodo.
  • Entrambi i figli di uno spazio vuoto sono vuoti a loro volta, e la profondità è al massimo 14.

Esempi

Input
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
Output
4
Spiegazione
Il percorso 7, 4, 3, 8, 6 (indici 9, 4, 1, 0, 2) contiene cinque nodi collegati da quattro archi. Svolta alla radice: tre archi scendono lungo il lato sinistro e uno lungo quello destro.

lock icon+12 test nascosti all’invio

challenge icon

Per approfondire

Come restituiresti il percorso stesso, ovvero i valori dei nodi da un'estremità all'altra del diametro?

Ripristina il codice
def diameterOfBinaryTree(tree):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

4