แรงบันดาลใจจากคำถามล่าสุดเกี่ยวกับ SO ...
เขียนฟังก์ชั่นเพื่อพิมพ์ต้นไม้ไบนารีในรูปแบบต่อไปนี้:
3
/ \
1 5
\ / \
2 4 6
- ผลลัพธ์ควรประกอบด้วยบรรทัดของโหนดตามด้วยบรรทัดของ
/
และ\
อักขระที่ระบุความสัมพันธ์ตามด้วยบรรทัดของโหนด ฯลฯ - คุณสามารถสมมติว่าโหนดทั้งหมดสามารถแสดงได้เป็นอักขระเดียว
- โหนดที่อยู่ติดกันในระดับต่ำสุดควรถูกคั่นด้วยพื้นที่อย่างน้อยหนึ่งโหนดโหนดที่อยู่ไกลออกไปควรแยกออกจากกันตามความเหมาะสม
- ควรวางโหนดที่มีลูกสองคนไว้ตรงกลางของลูกที่อยู่ตรงกลาง
- เครื่องหมายทับความสัมพันธ์ควรอยู่กึ่งกลางระหว่างผู้ปกครองและเด็กที่เหมาะสม (รอบใดก็ตามที่คุณต้องการ)
การป้อนข้อมูล:
อินพุตจะถูกจัดเตรียมไว้เป็นอาร์กิวเมนต์สำหรับฟังก์ชันของคุณ ฉันจะไม่ระบุโครงสร้างที่แน่นอนของต้นไม้อย่างไรก็ตามมันต้องใช้งานได้เป็นต้นไม้ไบนารีจริง ไม่มี "ต้นไม้แสดงอยู่ในโปรแกรมของฉันเนื่องจากสตริงมีลักษณะเหมือนผลลัพธ์ที่คาดหวัง"
คุณอาจพิมพ์ไปที่กระแสออกหรือส่งกลับสตริงที่มีเอาท์พุทที่คุณเลือก
คะแนนสำหรับรหัสที่สั้นที่สุด แต่ฉันต้องการโซลูชันที่ใช้งานได้ยาวนานกว่า short-working 90%
อัพเดทสำหรับรางวัล:
สำหรับเงินรางวัลฉัน (เครื่องมือเพิ่มประสิทธิภาพ) กำลังทำการเปลี่ยนแปลงเล็กน้อย:
- อินพุตอาจมาจาก STDIN, ARGV หรืออาร์กิวเมนต์ของฟังก์ชัน
- เอาต์พุตต้องอยู่ใน STDOUT (หรือ
console.log
สำหรับ JS) - คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นอยู่ในรูปของอาร์เรย์ตัวอย่างเช่น
[1,2,3]
หรือ[1 2 3]
อัพเดท 2 - ต้นไม้ไบนารีควรเป็นต้นไม้ค้นหาแบบทวิภาค เนื่องจากฉันไม่ได้พูดถึงเรื่องนี้ในตอนแรกฉันจะอนุญาตให้ผู้ใช้จัดการการแปลงอาร์เรย์ปกติเป็นอาร์เรย์การค้นหาต้นไม้แบบทวิภาคเป็นโปรแกรมแยกต่างหากและการนับไบต์สุดท้ายจะเป็นเพียงโปรแกรมที่จะใช้ในอาร์เรย์เป็นอาร์กิวเมนต์และพิมพ์ เหมือนต้นไม้ไบนารี
30000,1000,499999