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.
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

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

4