पृष्ठभूमि
एक द्विआधारी वृक्ष एक जड़ वाला पेड़ है जिसके प्रत्येक नोड में अधिकतम दो बच्चे हैं।
एक लेबल बाइनरी ट्री एक बाइनरी ट्री है जिसका प्रत्येक नोड एक सकारात्मक पूर्णांक के साथ लेबल किया जाता है; इसके अलावा, सभी लेबल अलग हैं ।
एक 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 जिसका प्री-ऑर्डर ट्रेवर्सल प्रिंट वास्तव में है या नहीं है ।
इनपुट
- एक गैर खाली सूची अलग धनात्मक पूर्णांक के ।
- वैकल्पिक रूप से, की लंबाई ।
उत्पादन
- एक truthy मूल्य अगर कुछ BST की प्री-ऑर्डर ट्रेवर्सल है।
- एक गलत मूल्य अन्यथा।
नियम
- मान्य प्रस्तुतियाँ , 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
उदाहरणों पर एक दृश्य देखने के लिए इस लिंक ( केविन क्रूज़सेन के सौजन्य से ) की जाँच करें ।