Arka fon
Bir ikili ağaç olan her düğüm en fazla iki çocukları olan bir köklü bir ağaçtır.
Bir etiketlenmiş ikili ağaç olan her bir düğüm bir pozitif tamsayı ile işaretlenmiş olan bir ikili ağaç olduğu; dahası, tüm etiketler belirgindir .
Bir BST (ikili arama ağacı), her bir düğümün etiketinin sol alt ağacındaki tüm düğümlerin etiketlerinden daha büyük ve sağ alt ağacındaki tüm düğümlerin etiketlerinden daha küçük olduğu etiketli bir ikili ağaçtır. Örneğin, aşağıdakiler bir BST'dir:
Ön sipariş geçişi etiketlenmiş bir ikili ağacın aşağıdaki yalancı kod ile tanımlanır.
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
Daha iyi bir sezgi elde etmek için aşağıdaki resme bakın:
Bu ikili ağacın köşeleri aşağıdaki sırayla yazdırılır:
F, B, A, D, C, E, G, I, H
Burada BST'ler ve burada ön sipariş geçişi hakkında daha fazla bilgi edinebilirsiniz .
Meydan okuma
Sayının bir liste Verilen , görev kimin tam olarak ön sipariş geçişi baskılar bir BST olup olmadığını belirlemektir .
Giriş
- Boş olmayan bir tam pozitif tamsayı listesi .
- İsteğe bağlı olarak, .
Çıktı
- Bir truthy değeri ise bazı BST ön sipariş geçişi olan.
- Aksi takdirde bir falsey değeri.
kurallar
- Geçerli gönderimler için standart kurallar , G / Ç , boşluklar geçerlidir.
- Bu kod golf , yani en kısa çözüm (bayt cinsinden) kazanır. Her zamanki gibi, golfçü dillerde saçma sapan kısa çözümlerin, seçtiğiniz dilde daha uzun bir cevap göndermekten vazgeçmesine izin vermeyin.
- Bu bir kural değildir, ancak çözümü test etmek için bir bağlantı ve nasıl çalıştığı hakkında bir açıklama içeriyorsa, cevabınız daha iyi alınacaktır.
Örnekler
Input ----> Output
[1] ----> True
[1,2,3,4] ----> True
[5,1,4,2,3] ----> True
[5,4,3,2,1,6,7,8,9] ----> True
[4,2,1,3,6,5,7] ----> True
[8,3,1,6,4,7,10,14,13] ----> True
[2,3,1] ----> False
[6,3,2,4,5,1,8,7,9] ----> False
[1,2,3,4,5,7,8,6] ----> False
[3,1,4,2] ----> False
Check out bu bağlantıyı (nezaket Kevin Cruijssen örneklere dair görsel bir bakış var).