Latar Belakang
Sebuah pohon biner adalah pohon berakar yang setiap node memiliki paling banyak dua anak.
Sebuah pohon biner berlabel adalah pohon biner yang setiap simpul diberi label dengan bilangan bulat positif; Selain itu, semua label berbeda .
Sebuah BST (pohon pencarian biner) adalah pohon biner berlabel dimana label setiap node lebih besar dari label semua node di subtree kiri, dan lebih kecil dari label semua node di subtree kanan. Misalnya, berikut ini adalah BST:
The pre-order traversal dari pohon biner berlabel didefinisikan oleh pseudo-kode berikut.
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
Lihat gambar berikut untuk mendapatkan intuisi yang lebih baik:
Simpul pohon biner ini dicetak dalam urutan berikut:
F, B, A, D, C, E, G, I, H
Anda dapat membaca lebih banyak tentang BST di sini , dan lebih banyak tentang traversal pre-order di sini .
Tantangan
Diberikan daftar bilangan bulat , tugas Anda adalah menentukan apakah ada BST yang cetakan traversal pra-cetaknya persis .
Memasukkan
- Daftar bilangan bulat positif yang tidak kosong .
- Secara opsional, panjang .
Keluaran
- Nilai kebenaran jika adalah traversal pre-order dari beberapa BST.
- Nilai falsey sebaliknya.
Aturan
- Aturan standar untuk pengiriman yang valid , I / O , celah berlaku.
- Ini adalah kode-golf , sehingga solusi terpendek (dalam byte) menang. Seperti biasa, jangan biarkan solusi yang sangat pendek dalam bahasa golf mencegah Anda untuk mengirim jawaban yang lebih panjang dalam bahasa pilihan Anda.
- Ini bukan aturan, tetapi jawaban Anda akan lebih baik diterima jika itu termasuk tautan untuk menguji solusi dan penjelasan tentang cara kerjanya.
Contohnya
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
Lihatlah tautan ini (milik Kevin Cruijssen ) untuk melihat contohnya secara visual.