Menu
CoddyTech

Boundary Traversal of Binary Tree

Array root menyimpan binary tree dalam urutan level: root berada di indeks 0, anak dari indeks i berada di 2i+1 (kiri) dan 2i+2 (kanan), -1 menandakan posisi kosong, dan mungkin ada entri -1 tambahan di bagian akhir. Leaf adalah node tanpa anak.

Kembalikan batasnya berlawanan arah jarum jam dari root:

  1. Root.
  2. Batas kiri, dari atas ke bawah: mulai dari anak kiri root, pindah ke anak kiri jika ada, jika tidak, pindah ke anak kanan. Berhenti sebelum leaf.
  3. Semua leaf, dari kiri ke kanan.
  4. Batas kanan, dari bawah ke atas: kebalikan dari batas kiri, mulai dari anak kanan root.

Tidak ada node yang dicantumkan dua kali, jadi tree dengan satu node hanya menghasilkan root-nya.

Fungsi

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
pohon biner secara berurutan berdasarkan level, dengan -1 untuk posisi kosong
Mengembalikaninteger-array
nilai-nilai batas, berlawanan arah jarum jam dari akar

Batasan

  • 1 ≤ root.length ≤ 32767
  • Setiap root[i] adalah -1 atau nilai dengan 0 ≤ root[i] ≤ 105.
  • root[0] tidak pernah -1, jadi pohon memiliki setidaknya satu node.
  • array bisa diakhiri dengan entri -1 tambahan setelah node terakhir.
  • Kedua anak dari posisi kosong juga kosong, dan kedalamannya paling banyak 14.
  • Nilai node berbeda-beda.

Contoh

Input
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Output
[7, 3, 1, 4, 6, 8, 9]
Penjelasan
Setelah akar 7, batas kiri adalah 3: anaknya 1 adalah daun. Daunnya adalah 1, 4, 6, 8. Batas kanan adalah 9, di atas daun 8.
challenge icon

Pertanyaan lanjutan

Bagaimana kamu akan menyusun batas searah jarum jam: akar, tepi kanan dari atas ke bawah, daun dari kanan ke kiri, lalu tepi kiri dari bawah ke atas?

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

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

[7, 3, 1, 4, 6, 8, 9]