Menu
CoddyTech

Binary Tree Right Side View

array root menyimpan pohon biner. Akar berada di indeks 0, anak-anak dari simpul pada indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), -1 menandai tempat kosong, dan entri -1 tambahan mungkin muncul di akhir.

Lihat pohon dari sisi kanannya. Setiap level menampilkan tepat satu simpul, yaitu yang paling kanan, dan menghalangi simpul lainnya. Daftarkan nilai-nilai tersebut dari level akar hingga level terdalam.

Fungsi

rightSideView(root: integer-array) → integer-array
rootinteger-array
pohon dalam urutan heap, dengan -1 untuk posisi kosong
Mengembalikaninteger-array
nilai paling kanan di setiap tingkat, mulai dari tingkat teratas

Batasan

  • 1 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 104.
  • Nilai-nilai node berbeda.
  • root[0] tidak pernah -1, jadi pohon memiliki setidaknya satu node.
  • array mungkin diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua child dari tempat kosong juga kosong, dan tree memiliki paling banyak 14 level.

Contoh

Input
root = [5, 2, 9, 7, 4, -1, 1, -1, 3]
Output
[5, 9, 1, 3]
Penjelasan
Dari sisi kanan, kamu melihat 5, 9, dan 1 (indeks 6). Tingkat keempat hanya berisi 3, pada indeks 8 di bawah 7 dalam subtree kiri. Tidak ada apa pun di sisi kanan yang mencapai kedalaman itu, jadi 3 terlihat.
challenge icon

Pertanyaan lanjutan

Bagaimana cara mendapatkan tampilan sisi kanan pohon yang setiap nodenya dapat memiliki jumlah anak berapa pun, yang disimpan sebagai list dari kiri ke kanan?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[5, 9, 1, 3]