Menu
CoddyTech

Left View of Binary Tree

Kamu mendapatkan pohon biner sebagai array root dalam urutan heap: akar berada di indeks 0, anak dari indeks i berada di 2*i+1 (kiri) dan 2*i+2 (kanan), dan -1 menandai posisi kosong. Array dapat diakhiri dengan entri -1 tambahan.

Berdirilah di sebelah kiri pohon. Pada setiap tingkat, kamu melihat satu simpul, yaitu yang paling kiri; simpul lainnya di tingkat itu tersembunyi di belakangnya. Kembalikan nilai-nilai yang kamu lihat, dari tingkat teratas ke bawah.

Fungsi

leftView(root: integer-array) → integer-array
rootinteger-array
pohon dalam urutan heap, dengan -1 untuk tempat kosong
Mengembalikaninteger-array
nilai paling kiri di setiap level, dimulai dari level teratas

Batasan

  • 1 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 104.
  • Nilai node berbeda satu sama lain.
  • root[0] tidak pernah -1, jadi pohon memiliki setidaknya satu simpul.
  • array tersebut mungkin 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 = [3, 8, 5, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 1]
Output
[3, 8, 6, 1]
Penjelasan
8 adalah leaf, jadi level ketiga dan keempat hanya berisi 6 (indeks 6) dan 1 (indeks 13), keduanya berada di bawah child kanan 5. Kamu tetap melihatnya: [3, 8, 6, 1].
challenge icon

Pertanyaan lanjutan

Level d mengisi indeks 2^d-1 hingga 2^(d+1)-2. Bisakah kamu membangun tampilan dengan memindai rentang tersebut, tanpa queue atau rekursi? Berapa biayanya pada array yang diberi padding?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[3, 8, 6, 1]