एसओ के हालिया सवाल से प्रेरित ...
निम्नलिखित प्रारूप में एक बाइनरी ट्री प्रिंट करने के लिए एक फ़ंक्शन लिखें:
3
/ \
1 5
\ / \
2 4 6
- आउटपुट में नोड्स की एक पंक्ति शामिल होनी चाहिए,
/
और\
उसके बाद रिश्तों को दर्शाने वाले पात्रों और नोड्स की एक लाइन के बाद वर्ण इत्यादि शामिल होंगे। - आप मान सकते हैं कि सभी नोड्स एकल वर्ण के रूप में प्रतिनिधित्व करने योग्य हैं।
- निम्नतम स्तर पर आसन्न नोड्स को कम से कम एक स्थान से अलग किया जाना चाहिए, आगे के नोड्स को उचित रूप में अलग किया जाना चाहिए।
- दो बच्चों वाले नोड्स को उनके सीधे बच्चों के बीच में रखा जाना चाहिए।
- माता-पिता और उपयुक्त बच्चे (जो भी आप चाहते हैं) के बीच संबंध स्लेश आधे रास्ते पर होना चाहिए।
इनपुट:
इनपुट आपके फ़ंक्शन के तर्क के रूप में प्रदान किया जाएगा। मैं पेड़ की सटीक संरचना को निर्दिष्ट नहीं करूंगा, हालांकि यह एक वास्तविक द्विआधारी पेड़ के रूप में उपयोग करने योग्य होना चाहिए। संयोग से "अपेक्षित उत्पादन की तरह लग रहे तार" के रूप में मेरे कार्यक्रम में "पेड़ों का प्रतिनिधित्व नहीं किया जाता है"।
आप किसी आउटपुट स्ट्रीम पर प्रिंट कर सकते हैं या आउटपुट, अपनी पसंद से युक्त स्ट्रिंग लौटा सकते हैं।
कम से कम कोड के लिए अंक, लेकिन मैं बहुत 90%-एक कम से कम एक पूरी तरह से काम कर रहे लंबे समाधान पसंद करेंगे।
इनाम के लिए अद्यतन:
इनाम के लिए, मैं (ऑप्टिमाइज़र) थोड़ा बदलाव कर रहा हूँ:
- इनपुट STDIN, ARGV या फ़ंक्शन तर्क से हो सकता है।
- आउटपुट STDOUT पर होना चाहिए (या
console.log
JS के लिए) - आप मान सकते हैं कि इनपुट पूर्व के लिए, सरणी के रूप में है।
[1,2,3]
या[1 2 3]
अपडेट 2 - बाइनरी ट्री वास्तव में एक बाइनरी सर्च ट्री होना चाहिए। चूंकि मैंने शुरू में इसका उल्लेख नहीं किया था, इसलिए मैं उपयोगकर्ताओं को एक सामान्य सरणी को एक अलग प्रोग्राम के रूप में बाइनरी सर्च ट्री सरणी में परिवर्तित करने की अनुमति दूंगा और अंतिम बाइट गिनती केवल प्रोग्राम के लिए तर्क के रूप में सरणी में लेने और इसे प्रिंट करने के लिए होगी। एक बाइनरी ट्री की तरह।
30000,1000,499999