Menu
CoddyTech

Vertical Order Traversal of a Binary Tree

İkili ağaç, yığın sırasına göre root dizisinde saklanır: kök 0 indeksindedir, i indeksinin çocukları 2*i+1 (sol) ve 2*i+2 (sağ) indekslerindedir, boş bir konumu -1 belirtir ve dizinin sonunda fazladan -1 girdileri bulunabilir.

Kök, 0 sütunundadır; sol çocuk, ebeveyninin bir sütun solunda, sağ çocuk ise bir sütun sağındadır. Soldan sağa her sütun için bir liste döndürün. Bir sütundaki düğümleri yukarıdan aşağıya sıralayın; aynı sütunu ve derinliği paylaşan düğümleri ise değerleri artan sırada listeleyin.

Fonksiyon

verticalTraversal(root: integer-array) → integer-2d-array
rootinteger-array
yığın düzenindeki ağaç; boş bir konum için -1 kullanılır
Döndürürinteger-2d-array
Her sütun için bir değer listesi; önce en soldaki sütun, her sütunda yukarıdan aşağıya

Kısıtlar

  • 1 ≤ root.length ≤ 32767
  • Her root[i], -1 ya da 0 ≤ root[i] ≤ 5000 koşulunu sağlayan bir değerdir ve hiçbir değer iki kez geçmez.
  • 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 girdileriyle bitebilir.
  • Boş bir konumun her iki çocuğu da boştur ve ağaç en fazla 14 seviyeye sahiptir.

Örnekler

Girdi
root = [5, 2, 9, 4, 7, 1, 6]
Çıktı
[[4], [2], [5, 1, 7], [9], [6]]
Açıklama
0. sütun kök 5'i, ardından iki seviye aşağıda 7 ve 1'i içerir. Bu ikisi aynı sütunu ve derinliği paylaşır, bu nedenle 7 daha solda olmasına rağmen 1, 7'den önce gelir.
challenge icon

Ek soru

Her değer en fazla 5000. Karşılaştırmalı sıralamayı kullanmayı bırakıp O(n + 5000) zamanda bitirmek için bundan yararlanabilir misin?

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

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

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