Menu
CoddyTech

Left View of Binary Tree

Du erhältst einen Binärbaum als Array root in Heap-Reihenfolge: Die Wurzel steht am Index 0, die Kinder des Index i stehen bei 2*i+1 (links) und 2*i+2 (rechts), und -1 kennzeichnet eine leere Stelle. Das Array kann mit zusätzlichen -1-Einträgen enden.

Stell dich links neben den Baum. Auf jeder Ebene siehst du einen Knoten, den ganz linken; der Rest der Ebene verbirgt sich dahinter. Gib die Werte zurück, die du siehst, von der obersten Ebene nach unten.

Funktion

leftView(root: integer-array) → integer-array
rootinteger-array
Der Baum in Heap-Reihenfolge, mit -1 für eine leere Stelle
Gibt zurückinteger-array
Der jeweils linkeste Wert jeder Ebene, beginnend mit der obersten Ebene

Einschränkungen

  • 1 ≤ root.length ≤ 32767
  • Jedes root[i] ist -1 oder ein Wert mit 0 ≤ root[i] ≤ 104.
  • Die Knotenwerte sind verschieden.
  • 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 = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Ausgabe
[3, 8, 6, 1]
Erklärung
8 ist ein Blatt, daher enthalten die dritte und vierte Ebene nur 6 (Index 6) und 1 (Index 13), beide unter dem rechten Kind 5. Du siehst sie trotzdem: [3, 8, 6, 1].
challenge icon

Weiterführende Frage

Ebene d belegt die Indizes 2^d-1 bis 2^(d+1)-2. Kannst du die Ansicht erstellen, indem du diese Bereiche durchläufst, ohne Warteschlange oder Rekursion? Wie aufwendig ist das bei einem aufgefüllten Array?

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

Test #1

Test #2

Test #3

Argument

root = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]

Erwartete Ausgabe

[3, 8, 6, 1]