Menu
CoddyTech

Binary Tree Zigzag Level Order Traversal

Du erhältst einen Binärbaum, der im Array root gespeichert ist. Die Wurzel befindet sich am Index 0, die Kinder des Index i befinden sich bei 2*i+1 (links) und 2*i+2 (rechts), -1 kennzeichnet eine leere Position, und das Array kann mit zusätzlichen -1-Einträgen enden.

Gib die Knotenwerte Ebene für Ebene in Zickzack-Reihenfolge zurück: die Ebene der Wurzel von links nach rechts, die nächste von rechts nach links und so weiter, abwechselnd bis zur tiefsten Ebene. Dies wird auch als spiralförmige Ebenenreihenfolge bezeichnet.

Funktion

zigzagLevelOrder(root: integer-array) → integer-2d-array
rootinteger-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, abwechselnd von links nach rechts und von rechts nach links

Einschränkungen

  • 1 ≤ root.length ≤ 32767
  • Jedes root[i] ist -1 oder ein Wert mit 0 ≤ root[i] ≤ 104.
  • Die Knotenwerte sind eindeutig.
  • root[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.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und der Baum hat höchstens 14 Ebenen.

Beispiele

Eingabe
root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]
Ausgabe
[[8], [5, 12], [1, 9, 14], [11, 2, 4]]
Erklärung
Von links nach rechts gelesen sind die Ebenen 8; 12, 5; 1, 9, 14; 4, 2, 11. Die Ebenen 1 und 3 werden rückwärts durchlaufen: [5, 12] und [11, 2, 4].
challenge icon

Weiterführende Frage

Kannst du jeden Wert direkt an seinen endgültigen Platz in seiner Zeile legen, ohne etwas umzukehren und ohne einen zweiten Stapel?

Code zurücksetzen
def zigzagLevelOrder(root):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

root = [8, 12, 5, 1, 9, -1, 14, -1, -1, 4, 2, -1, -1, 11]

Erwartete Ausgabe

[[8], [5, 12], [1, 9, 14], [11, 2, 4]]