Menu
CoddyTech

Binary Tree Level Order Traversal

Das Array tree enthält einen Binärbaum. 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 am Ende können zusätzliche -1-Einträge stehen.

Gib die Knotenwerte Ebene für Ebene zurück: eine Liste pro Ebene, von der Wurzel bis zur tiefsten Ebene, jeweils mit den Werten von links nach rechts.

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, beginnend mit der obersten 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, also hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten mit zusätzlichen -1-Einträgen enden.
  • Auch beide Kinder eines leeren Platzes 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
Index 3 ist leer, daher hat 9 nur ein rechtes Kind, 6. Die dritte Ebene besteht aus 6, 8, 5, und die 3 an Index 9, unterhalb von 6, ist allein auf der vierten Ebene.
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 Code

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

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