Menu
CoddyTech

Binary Tree Right Side View

Das Array root enthält einen binären Baum. Die Wurzel befindet sich an Index 0, die Kinder des Knotens an Index i befinden sich an den Indizes 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.

Betrachte den Baum von der rechten Seite. Auf jeder Ebene siehst du genau einen Knoten, den am weitesten rechts liegenden, während die übrigen verdeckt sind. Liste diese Werte von der Ebene der Wurzel bis zur tiefsten Ebene auf.

Funktion

rightSideView(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 ganz rechte 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 Werte der Knoten sind eindeutig.
  • root[0] ist niemals -1, daher hat der Baum mindestens einen Knoten.
  • Das Array kann nach dem letzten Knoten noch zusätzliche -1-Einträge enthalten.
  • Beide Kinder einer leeren Stelle sind ebenfalls leer, und der Baum hat höchstens 14 Ebenen.

Beispiele

Eingabe
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
Ausgabe
[5, 9, 1, 3]
Erklärung
Von rechts siehst du 5, 9 und 1 (Index 6). Die vierte Ebene enthält nur 3 an Index 8 unter 7 im linken Teilbaum. Auf der rechten Seite reicht nichts so tief, daher ist 3 sichtbar.
challenge icon

Weiterführende Frage

Wie würdest du die rechte Seitenansicht eines Baums erhalten, in dem jeder Knoten beliebig viele Kinder haben kann, die als Liste von links nach rechts gespeichert sind?

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

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, 7, 4, -1, 1, -1, 3]

Erwartete Ausgabe

[5, 9, 1, 3]