Menu
CoddyTech

Boundary Traversal of Binary Tree

root dizisi, ikili ağacı seviye sırasına göre tutar: kök 0 indeksinde, i indeksindeki düğümün çocukları 2i+1 (sol) ve 2i+2 (sağ) indekslerinde, boş bir konum için -1 bulunur ve sonda fazladan -1 girdileri olabilir. Yaprak, çocuğu olmayan bir düğümdür.

Sınırı kökten başlayarak saat yönünün tersine döndür:

  1. Kök.
  2. Sol sınır, yukarıdan aşağıya: kökün sol çocuğundan başlayarak, varsa sol çocuğa, yoksa sağ çocuğa ilerle. Bir yaprağa gelmeden dur.
  3. Tüm yapraklar, soldan sağa.
  4. Sağ sınır, aşağıdan yukarıya: kökün sağ çocuğundan başlayan sol sınırın aynadaki karşılığı.

Hiçbir düğüm iki kez listelenmez; bu nedenle tek düğümlü bir ağaçta yalnızca kök bulunur.

Fonksiyon

boundaryTraversal(root: integer-array) → integer-array
rootinteger-array
ikili ağacı seviye sırasına göre, boş konumlar için -1 kullanarak
Döndürürinteger-array
kökten başlayarak saat yönünün tersine sınır değerleri

Kısıtlar

  • 1 ≤ root.length ≤ 32767
  • Her root[i], -1 ya da 0 ≤ root[i] ≤ 105 koşulunu sağlayan bir değerdir.
  • root[0] hiçbir zaman -1 değildir, dolayısıyla ağaçta en az bir düğüm vardır.
  • Dizi, son düğümden sonra fazladan -1 öğeleriyle bitebilir.
  • Boş bir noktanın iki çocuğu da boştur ve derinlik en fazla 14'tür.
  • Düğüm değerleri birbirinden farklıdır.

Örnekler

Girdi
root = [7, 3, 9, 1, 5, 8, -1, -1, -1, 4, 6]
Çıktı
[7, 3, 1, 4, 6, 8, 9]
Açıklama
Kök 7'den sonra sol sınır 3'tür: onun çocuğu olan 1 bir yaprak düğümdür. Yaprak düğümler 1, 4, 6, 8'dir. Sağ sınır 9'dur; 8 yaprak düğümünün üzerindedir.
challenge icon

Ek soru

Sınırı saat yönünde nasıl listelersiniz: kök, yukarıdan aşağıya sağ kenar, sağdan sola yapraklar, ardından aşağıdan yukarıya sol kenar?

Kodu sıfırla
def boundaryTraversal(root):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

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