Menu
CoddyTech

Symmetric Tree

LeichtBaumdurchlaufpython iconjava iconcpp iconc iconjs icon+10

Du erhältst einen binären Baum, der im Level-Order-Verfahren im Array tree gespeichert ist. Die Wurzel befindet sich am Index 0, die Kinder des Knotens am Index i befinden sich an den Indizes 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 true zurück, wenn der Baum spiegelsymmetrisch zu einer vertikalen Linie durch die Wurzel ist, andernfalls false. Sowohl die Form als auch die Werte müssen übereinstimmen.

Funktion

isSymmetric(tree: integer-array) → boolean
treeinteger-array
den Binärbaum in Ebenenreihenfolge, wobei -1 eine leere Stelle kennzeichnet
Gibt zurückboolean
true, wenn der Baum sich selbst spiegelt, andernfalls false

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.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und die Tiefe beträgt höchstens 14.

Beispiele

Eingabe
tree = [1, 2, 2, 3, 4, 4, 3]
Ausgabe
true
Erklärung
Klappe den Baum in der Mitte zusammen. Die beiden 2 an den Indizes 1 und 2 treffen aufeinander, die äußeren 3 an den Indizes 3 und 6 treffen aufeinander, und die inneren 4 bei 4 und 5 treffen aufeinander.

lock icon+16 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wenn die Form sich selbst spiegelt, aber einige Werte nicht übereinstimmen: Wie viele Knotenwerte musst du mindestens ändern, damit der Baum symmetrisch wird?

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

Fall 1

Fall 2

Fall 3

Eingabe

tree = [1, 2, 2, 3, 4, 4, 3]

Erwartet

true