Menu
CoddyTech

Top View of Binary Tree

Kamu mendapatkan pohon biner yang disimpan dalam array root dengan urutan heap: root berada di indeks 0, anak-anak dari indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), dan -1 menandakan tempat kosong.

Root berada di kolom 0; anak kiri berada satu kolom di sebelah kiri induknya dan anak kanan berada satu kolom di sebelah kanan. Jika dilihat dari atas, kamu melihat node paling dangkal di setiap kolom; jika ada nilai yang sama, pilih node yang lebih dahulu dalam levelnya dari kiri ke kanan (indeks yang lebih kecil). Kembalikan nilai-nilai yang terlihat, dari kolom paling kiri hingga paling kanan.

Fungsi

topView(root: integer-array) → integer-array
rootinteger-array
pohon dalam urutan heap, dengan -1 untuk posisi kosong
Mengembalikaninteger-array
nilai yang terlihat dari atas di setiap kolom, mulai dari kolom paling kiri

Batasan

  • 1 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 104, dan tidak ada nilai yang muncul dua kali.
  • root[0] tidak pernah -1, jadi tree memiliki setidaknya satu node.
  • array dapat diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua anak dari posisi kosong juga kosong, dan pohon memiliki paling banyak 14 tingkat.

Contoh

Input
root = [5, 2, 9, 4, 7, 1, 6]
Output
[4, 2, 5, 9, 6]
Penjelasan
Dari kiri ke kanan, kolom-kolomnya berisi 4 (kolom -2), 2 (-1), akar 5 (0), 9 (1), dan 6 (2). 7 dan 1 juga berada di kolom 0, tetapi akar berada di atasnya.
challenge icon

Pertanyaan lanjutan

Dengan object node, bukan array, tidak ada indeks untuk menentukan hasil yang seri. Bagaimana kamu menyatakan aturan untuk hasil seri, dan apakah kode breadth-first-mu berubah?

Reset kode
def topView(root):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[4, 2, 5, 9, 6]