पृष्ठभूमि
एक बिना पेड़ का पेड़ ऐसा लग सकता है:
o
/ | \
o o o
| / \
o o o
इस पेड़ को रैखिक बनाने के लिए , हम पहले प्रत्येक नोड o
को बाल नोड की संख्या के साथ लेबल करते हैं:
3
/ | \
1 0 2
| / \
0 0 0
और फिर एक सूची में एक सांस-पहले तरीके से संख्याएं लिखें, जिसका अर्थ पंक्ति द्वारा रेखा और दाएं से बाएं:
[3, 1, 0, 2, 0, 0, 0]
यह ऊपर के पेड़ का एक अनूठा और अस्पष्ट प्रतिनिधित्व है, जिसका अर्थ है कि किसी भी दो अलग-अलग शुद्ध पेड़ों में एक ही रेखीयकरण नहीं होगा और हम सूची से मूल पेड़ को फिर से संगठित कर सकते हैं।
हालांकि प्रत्येक पेड़ एक निश्चित पूर्णांक सूची से मेल खाता है, प्रत्येक पूर्णांक सूची एक वैध रैखिक वृक्ष का [2, 0, 0, 0]
प्रतिनिधित्व नहीं करती है : उदाहरण के लिए एक वैध पेड़ का प्रतिनिधित्व नहीं करता है, अगर हम इसे इस पेड़ के साथ समाप्त करने की कोशिश करते हैं
[2,0,0,0] -> 2 [0,0,0] -> 2 [0,0] -> 2 [0]
/ \ / \ / \
0 0 0
लेकिन अभी भी 0
सूची में एक छोड़ दिया है और इसे कहीं नहीं रखा है। इसी तरह [2, 0]
एक वैध वृक्ष रेखीयकरण नहीं है, क्योंकि डी-लीनरीकृत वृक्ष में एक खाली बच्चा होता है:
2
/ \
0
कार्य
पूर्णांक सूची को देखते हुए, यह तय करें कि क्या यह संभव के रूप में कुछ बाइट्स का उपयोग करके किसी पेड़ का एक वैध रैखिककरण है। आप एक पूर्ण कार्यक्रम या एक समारोह लिख सकते हैं।
इनपुट: गैर-नकारात्मक पूर्णांक की एक गैर-रिक्त सूची।
आउटपुट: एक सत्य मूल्य अगर सूची एक वृक्ष का रैखिककरण है, तो एक मिथ्या मूल्य अन्यथा।
परीक्षण के मामलों
Truthy[0]
[2, 0, 0]
[1, 1, 1, 1, 1, 0]
[3, 1, 0, 2, 0, 0, 0]
[2, 0, 2, 2, 0, 0, 2, 0, 0]
[3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0]
[1, 5, 3, 0, 2, 1, 4, 0, 1, 0, 0, 2, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0]
Falsy
[0, 1]
[2, 0]
[2, 0, 0, 0]
[1, 0, 1]
[3, 2, 1, 0]
[2, 0, 0, 2, 0, 0]
[4, 1, 0, 3, 0, 0, 0, 0]
[4, 2, 0, 3, 1, 0, 0, 0, 0, 0]
{X0@{+\(_{\}&}/|!}
मुझे लगता है?