งาน
รับการสำรวจเส้นทางการสั่งซื้อล่วงหน้าและการสั่งซื้อสินค้าของต้นไม้ไบนารีเต็มรูปแบบให้ส่งคืนการสำรวจเส้นทางตามลำดับ
การสำรวจเส้นทางจะถูกแสดงเป็นสองรายการซึ่งทั้งคู่ประกอบด้วยnจำนวนเต็มบวกที่แตกต่างกันโดยแต่ละโหนดจะระบุเฉพาะ โปรแกรมของคุณอาจใช้รายการเหล่านี้และออกผลลัพธ์การส่งผ่านตามลำดับโดยใช้รูปแบบ I / O ที่สมเหตุสมผล
คุณอาจถือว่าข้อมูลที่ป้อนนั้นถูกต้อง (นั่นคือรายการจริง ๆ แล้วเป็นตัวแทนการสำรวจเส้นทางของต้นไม้บางต้น)
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ
คำนิยาม
ต้นไม้ไบนารีเต็มรูปแบบเป็นโครงสร้างที่ จำกัด ของโหนดแทนนี่โดยจำนวนเต็มบวกที่ไม่ซ้ำกัน
ต้นไม้ไบนารีเต็มรูปแบบคือใบไม้ซึ่งประกอบด้วยโหนดเดียว:
1
หรือสาขาที่ประกอบด้วยหนึ่งโหนดที่มีสองsubtrees (เรียกว่าsubtrees ซ้ายและขวา ) ซึ่งแต่ละอันก็เป็นต้นไม้ไบนารีเต็มรูปแบบ:
1 / \ … …
นี่คือตัวอย่างเต็มของต้นไม้ไบนารีเต็ม:
6
/ \
3 4
/ \ / \
1 8 5 7
/ \
2 9
การสำรวจเส้นทางการสั่งซื้อล่วงหน้าของต้นไม้ไบนารีเต็มถูกกำหนดแบบเรียกซ้ำดังนี้:
- สำรวจเส้นทางการสั่งซื้อล่วงหน้าของใบมีโหนดnรายการ [ n ]
- การสำรวจเส้นทางล่วงหน้าของสาขาที่มีโหนดnและต้นไม้ย่อย(L, R)คือรายการ [ n ] + preorder ( L ) + preorder ( R ) โดยที่ + เป็นตัวดำเนินการเรียงลำดับรายการ
สำหรับต้นไม้ข้างต้นว่า[6, 3, 1, 8, 2, 9, 4, 5, 7]
การสำรวจเส้นทางหลังการสั่งซื้อของต้นไม้ไบนารีเต็มถูกกำหนดแบบเรียกซ้ำดังนี้:
- สำรวจเส้นทางการโพสต์คำสั่งของใบมีโหนดnรายการ [ n ]
- Postorder สำรวจเส้นทางของสาขาที่มีโหนดnและ sub-ต้นไม้(L, R)เป็นรายการPostorder ( L ) + Postorder ( R ) + [ n ]
สำหรับต้นไม้ข้างต้นว่า[1, 2, 9, 8, 3, 5, 7, 4, 6]
การสำรวจเส้นทางตามลำดับของต้นไม้ไบนารีเต็มถูกกำหนดแบบวนซ้ำดังนี้:
- สำรวจเส้นทางในคำสั่งของใบมีโหนดnรายการ [ n ]
- การสำรวจเส้นทางตามลำดับของสาขาที่มีโหนดnและต้นไม้ย่อย(L, R)คือลิสต์inorder ( L ) + [ n ] + inorder ( R )
สำหรับต้นไม้ข้างต้นว่า[1, 3, 2, 8, 9, 6, 5, 4, 7]
สรุป: ให้คู่ของรายการ[6, 3, 1, 8, 2, 9, 4, 5, 7] (ก่อน) และ[1, 2, 9, 8, 3, 5, 7, 4, 6] (โพสต์) เป็น input โปรแกรมของคุณควรส่งออก[1, 3, 2, 8, 9, 6, 5, 4, 7]
กรณีทดสอบ
preorder, postorder → expected output
กรณีทดสอบแต่ละคนมีรูปแบบเป็น
[8], [8] → [8]
[3,4,5], [4,5,3] → [4,3,5]
[1,2,9,8,3], [9,8,2,3,1] → [9,2,8,1,3]
[7,8,10,11,12,2,3,4,5], [11,12,10,2,8,4,5,3,7] → [11,10,12,8,2,7,4,3,5]
[1,2,3,4,5,6,7,8,9], [5,6,4,7,3,8,2,9,1] → [5,4,6,3,7,2,8,1,9]
"CDE" and "DEC" give "DCE"
? (แม้จะใช้ตัวอักษร unicode ถ้าฉันต้องการโหนดจำนวนมาก)
"CDE"
ไม่ได้แตกต่างกันมากจาก[67, 68, 69]
:)