Menu
CoddyTech

Bottom View of Binary Tree

Das Array root enthält einen Binärbaum: die Wurzel an Index 0, die Kinder von Index i an 2i+1 (links) und 2i+2 (rechts), -1 für eine leere Stelle und möglicherweise zusätzliche -1-Einträge am Ende.

Die Wurzel befindet sich in Spalte 0; ein Schritt nach links verschiebt dich um eine Spalte nach links, ein Schritt nach rechts um eine Spalte nach rechts. Von unten betrachtet zeigt jede Spalte ihren tiefsten Knoten, und bei Gleichstand den letzten auf dieser Ebene, wenn man von links nach rechts liest (den mit dem größeren Index). Gib die Werte zurück, die du siehst, beginnend mit der Spalte ganz links.

Funktion

bottomView(root: integer-array) → integer-array
rootinteger-array
der Baum in Heap-Reihenfolge, mit -1 für eine leere Position
Gibt zurückinteger-array
der von unten betrachtete Wert in jeder Spalte, beginnend mit der Spalte ganz links

Einschränkungen

  • 1 ≤ root.length ≤ 32767
  • Jedes root[i] ist -1 oder ein Wert mit 0 ≤ root[i] ≤ 104, und kein Wert kommt zweimal vor.
  • root[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 der Baum hat höchstens 14 Ebenen.

Beispiele

Eingabe
root = [5, 2, 9, 4, 7, 1, 6]
Ausgabe
[4, 2, 1, 9, 6]
Erklärung
Spalte 0 enthält 5 und zwei Ebenen darunter 7 (Index 4) und 1 (Index 5). 1 kommt auf derselben Ebene später, also wird es angezeigt. Die Spalten -2, -1, 1 und 2 enthalten 4, 2, 9 und 6.
challenge icon

Weiterführende Frage

Wenn bei einem Gleichstand auf der tiefsten Ebene einer Spalte alle gleichrangigen Knoten von links nach rechts zurückgegeben werden sollen, wie würde sich die Breitensuche-Version ändern? Was würde Spalte 0 von Beispiel 1 ergeben?

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

Test #1

Test #2

Test #3

Argument

root = [5, 2, 9, 4, 7, 1, 6]

Erwartete Ausgabe

[4, 2, 1, 9, 6]