Menu
CoddyTech

Invert 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 steht am Index 0, die Kinder des Knotens am Index i stehen bei 2*i+1 (links) und 2*i+2 (rechts), -1 kennzeichnet einen leeren Platz, und das Array kann mit zusätzlichen Einträgen -1 enden.

Invertiere den Baum: Vertausche bei jedem Knoten das linke und das rechte Kind, sodass der gesamte Baum zu seinem Spiegelbild wird. Gib den invertierten Baum in derselben Form zurück, ohne -1-Einträge am Ende.

Funktion

invertTree(tree: integer-array) → integer-array
treeinteger-array
der Binärbaum in Ebenenreihenfolge, wobei -1 eine leere Stelle kennzeichnet
Gibt zurückinteger-array
der gespiegelte Baum in Ebenenreihenfolge, ohne abschließende -1-Einträge

Einschränkungen

  • 1 ≤ tree.length ≤ 16383
  • 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 mit zusätzlichen -1-Einträgen enden.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.

Beispiele

Eingabe
tree = [5, 3, 8, 1, 4, -1, 9]
Ausgabe
[5, 8, 3, 9, -1, 4, 1]
Erklärung
Die Kinder der Wurzel 3 und 8 tauschen die Plätze. Unter ihnen kommen die 1 und 4 unter 3 als 4 und 1 zurück, und 8, das zuvor nur ein rechtes Kind 9 hatte, hat es jetzt links.

lock icon+14 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wie würdest du überprüfen, ob ein Baum sein eigenes Spiegelbild ist, indem du dieselben Indexpaarungen verwendest, aber keine umgekehrte Kopie erstellst?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

[5, 8, 3, 9, -1, 4, 1]