कार्य
पूर्ण बाइनरी ट्री के प्री-ऑर्डर और पोस्ट-ऑर्डर ट्रैवर्सल्स को देखते हुए, इसके इन-ऑर्डर ट्रैवर्सल को वापस करें।
Traversals दो सूचियों, दोनों से युक्त के रूप में प्रतिनिधित्व किया जाएगा n अलग धनात्मक पूर्णांक, प्रत्येक विशिष्ट एक नोड की पहचान। आपका प्रोग्राम इन सूचियों को ले सकता है, और परिणामी-ऑर्डर ट्रैवर्सल का उत्पादन कर सकता है, किसी भी उचित I / O प्रारूप का उपयोग कर।
आप मान सकते हैं कि इनपुट वैध है (अर्थात, सूचियाँ वास्तव में किसी पेड़ के ट्रैवर्सल्स का प्रतिनिधित्व करती हैं)।
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
परिभाषाएं
एक पूर्ण बाइनरी ट्री नोड्स की एक परिमित संरचना है , जिसे यहां अद्वितीय सकारात्मक पूर्णांक द्वारा दर्शाया गया है।
एक पूर्ण बाइनरी ट्री या तो एक पत्ती है , जिसमें एक नोड होता है :
1
या एक शाखा , जिसमें दो उपप्रकारों (जिसे बाएं और दाएं उपप्रकार कहा जाता है ) के साथ एक नोड होता है, जिसमें से प्रत्येक, बदले में, एक पूर्ण बाइनरी ट्री होता है:
1 / \ … …
यहाँ एक पूर्ण बाइनरी ट्री का पूरा उदाहरण दिया गया है:
6
/ \
3 4
/ \ / \
1 8 5 7
/ \
2 9
प्री-ऑर्डर ट्रेवर्सल एक पूर्ण द्विआधारी पेड़ के रिकर्सिवली इस प्रकार परिभाषित किया गया है:
- एक नोड n युक्त पत्ती का पूर्व-क्रम अनुक्रमणिका सूची [ n ] है।
- नोड n और उप-पेड़ (L, R) युक्त शाखा का पूर्व-क्रम अनुक्रमणिका सूची [ n ] + प्रीऑर्डर ( L ) + प्रीऑर्डर ( R ) है, जहां + सूची सुगम संचालक है।
उपरोक्त पेड़ के लिए, यह [6, 3, 1, 8, 2, 9, 4, 5, 7] है ।
बाद आदेश ट्रावर्सल एक पूर्ण द्विआधारी पेड़ के रिकर्सिवली इस प्रकार परिभाषित किया गया है:
- नोड एन युक्त एक पत्ती के बाद के आदेश का निशान सूची [ एन ] है।
- नोड n और उप-पेड़ (L, R) युक्त शाखा का पोस्ट-ऑर्डर ट्रैवर्सल सूची पोस्टऑर्डर ( L ) + पोस्टऑर्डर ( R ) + [ n ] है।
उपरोक्त पेड़ के लिए, यह [1, 2, 9, 8, 3, 5, 7, 4, 6] है ।
इन-आदेश ट्रावर्सल एक पूर्ण द्विआधारी पेड़ के रिकर्सिवली इस प्रकार परिभाषित किया गया है:
- नोड एन युक्त पत्ती का इन-ऑर्डर ट्रैवर्सल सूची [ एन ] है।
- नोड n और उप-पेड़ (L, R) युक्त शाखा का इन-ऑर्डर ट्रैवर्सल सूची इन्वर्टर ( L ) + [ n ] + इन्वर्टर ( 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] (पोस्ट) इनपुट के रूप में, आपके प्रोग्राम का आउटपुट [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"
:? (यहां तक कि अगर मुझे बहुत सारे नोड्स की आवश्यकता है तो यूनिकोड अक्षरों का उपयोग करना)
"CDE"
से बहुत अलग नहीं है[67, 68, 69]