พื้นหลัง
ต้นไม้ไบนารีเป็นต้นไม้ที่มีรากทุกโหนดมีที่มากที่สุดเด็กสองคน
ต้นไม้ไบนารีที่มีข้อความเป็นต้นไม้ไบนารีที่มีทุกโหนดมีป้ายที่มีจำนวนเต็มบวก; ยิ่งไปกว่านั้นป้ายชื่อทั้งหมดจะแตกต่างกัน
BST (ต้นไม้ค้นหาแบบทวิภาค) เป็นต้นไม้ไบนารีที่มีข้อความที่ป้ายชื่อของแต่ละโหนดมากกว่าฉลากของโหนดทั้งหมดในทรีย่อยซ้ายของตนและมีขนาดเล็กกว่าป้ายทุกโหนดในทรีย่อยด้านขวา ตัวอย่างเช่นต่อไปนี้คือ BST:
การสำรวจเส้นทางล่วงหน้าของต้นไม้ไบนารีที่ติดป้ายกำกับนั้นถูกกำหนดโดยรหัสหลอกต่อไปนี้
function preorder(node)
if node is null then
return
else
print(node.label)
preorder(node.left)
preorder(node.right)
ดูภาพต่อไปนี้เพื่อรับสัญชาติญาณที่ดีขึ้น:
จุดยอดของต้นไม้ไบนารีนี้จะถูกพิมพ์ตามลำดับต่อไปนี้:
F, B, A, D, C, E, G, I, H
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ BSTs ที่นี่และอื่น ๆ เกี่ยวกับการสำรวจเส้นทางการสั่งซื้อล่วงหน้าที่นี่
ท้าทาย
ได้รับรายชื่อของจำนวนเต็มงานของคุณคือการตรวจสอบว่ามีการ BST ที่มีการสั่งซื้อล่วงหน้า traversal พิมพ์ว่า
อินพุต
- ไม่ว่างเปล่ารายการของที่แตกต่างกันจำนวนเต็มบวก
- เลือกความยาวของ
เอาท์พุต
- truthyค่าถ้าเป็นสำรวจเส้นทางการสั่งซื้อล่วงหน้าของ BST บาง
- falseyคุ้มค่าเป็นอย่างอื่น
กฎระเบียบ
- กฎระเบียบมาตรฐานสำหรับการส่งที่ถูกต้อง , I / O , ช่องโหว่ใช้
- นี่คือรหัส - กอล์ฟดังนั้นทางออกที่สั้นที่สุด (เป็นไบต์) ชนะ ตามปกติอย่าให้คำตอบสั้น ๆ อย่างน่าขันในภาษากอล์ฟกีดกันคุณจากการโพสต์คำตอบที่ยาวกว่าในภาษาที่คุณเลือก
- นี่ไม่ใช่กฎ แต่คำตอบของคุณจะได้รับดีกว่าถ้ามันมีลิงค์สำหรับทดสอบการแก้ปัญหาและคำอธิบายว่ามันทำงานอย่างไร
ตัวอย่าง
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
ลองดูลิงค์นี้ (ความอนุเคราะห์จากKevin Cruijssen ) เพื่อดูตัวอย่าง