Menu
CoddyTech

Diameter of Binary Tree

LeichtBaumdurchlaufpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen Binärbaum, der im Array tree in Ebenenreihenfolge gespeichert ist. Die Wurzel befindet sich am Index 0, die Kinder des Knotens am Index i befinden sich bei 2*i+1 (links) und 2*i+2 (rechts), -1 kennzeichnet eine leere Stelle, und das Array kann mit zusätzlichen Einträgen -1 enden. Gib den Durchmesser des Baums zurück: die Anzahl der Kanten auf dem längsten Pfad zwischen zwei beliebigen Knoten. Der Pfad kann durch die Wurzel verlaufen oder innerhalb eines Teilbaums bleiben.

Funktion

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
der Binärbaum in Ebenenreihenfolge, wobei -1 eine leere Stelle kennzeichnet
Gibt zurückinteger
die Anzahl der Kanten auf dem längsten Pfad zwischen zwei Knoten

Einschränkungen

  • 1 ≤ tree.length ≤ 32767
  • Jedes tree[i] ist -1 oder ein Wert mit 0 ≤ tree[i] ≤ 1000.
  • tree[0] ist niemals -1, daher hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten noch zusätzliche -1-Einträge enthalten.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.

Beispiele

Eingabe
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
Ausgabe
4
Erklärung
Der Pfad 7, 4, 3, 8, 6 (Indizes 9, 4, 1, 0, 2) enthält fünf Knoten, die durch vier Kanten verbunden sind. Er biegt an der Wurzel ab: drei Kanten nach unten auf der linken Seite und eine nach unten auf der rechten Seite.

lock icon+12 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wie würdest du den Pfad selbst zurückgeben, also die Knotenwerte von einem Ende des Durchmessers zum anderen?

Code zurücksetzen
def diameterOfBinaryTree(tree):
    # Schreibe hier Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

4