Menu
CoddyTech

Binary Tree Level Order Traversal

Du erhältst einen Binärbaum, der im Array tree 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 -1-Einträgen enden.

Gib die Knotenwerte Ebene für Ebene zurück: eine Liste mit dem Wert der Wurzel, dann eine Liste mit den Werten eine Ebene weiter unten, von links nach rechts, und so weiter bis zur tiefsten Ebene.

Funktion

levelOrder(tree: integer-array) → integer-2d-array
treeinteger-array
der Baum in Heap-Reihenfolge, mit -1 für eine leere Stelle
Gibt zurückinteger-2d-array
eine Liste von Werten pro Ebene, zuerst die oberste Ebene, jeweils von links nach rechts

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 zusätzliche -1-Einträge enthalten.
  • Auch die beiden Kinder eines leeren Feldes sind leer, und die Tiefe beträgt höchstens 14.

Beispiele

Eingabe
tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]
Ausgabe
[[4], [9, 2], [6, 8, 5], [3]]
Erklärung
Die Wurzel 4 hat die Kinder 9 und 2 an den Indizes 1 und 2. Index 3 ist leer, daher ist die dritte Ebene 6 (Index 4, unter 9), dann 8 und 5 (Indizes 5 und 6, unter 2). Die 3 an Index 9 ist das linke Kind von 6 und steht allein auf der vierten Ebene.

lock icon+15 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du die Ebenen in Zickzack-Reihenfolge zurückgeben, die erste von links nach rechts, die zweite von rechts nach links und so weiter, ohne eine Ebene zu sortieren?

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

Fall 1

Fall 2

Fall 3

Eingabe

tree = [4, 9, 2, -1, 6, 8, 5, -1, -1, 3]

Erwartet

[[4], [9, 2], [6, 8, 5], [3]]