पहले, मैं मान लूंगा कि सभी तत्व अलग हैं। कोई भी मात्रात्मक अनुक्रम आपको तत्वों के साथ एक पेड़ का आकार बताने जा रहा है [3,3,3,3,3]
। डुप्लिकेट तत्वों के साथ कुछ पेड़ों को फिर से बनाना संभव है, ज़ाहिर है; मैं नहीं जानता कि क्या पर्याप्त अच्छी स्थिति मौजूद है।
नकारात्मक परिणामों पर जारी रखते हुए, आप अपने पूर्व-आदेश और पोस्ट-ऑर्डर अनुक्रमिकताओं से अकेले एक द्विआधारी पेड़ को पूरी तरह से पुनर्निर्माण नहीं कर सकते। [1,2]
प्रीऑर्डर, [2,1]
पोस्ट-ऑर्डर को 1
रूट पर 2
होना चाहिए , लेकिन या तो बाएं बच्चे या सही बच्चे हो सकते हैं। यदि आप इस अस्पष्टता की परवाह नहीं करते हैं, तो आप पेड़ को निम्नलिखित एल्गोरिथ्म के साथ फिर से संगठित कर सकते हैं:
- आज्ञा दें पूर्व-क्रम ट्रैवर्सल हो और पोस्ट-ऑर्डर ट्रैवर्सल हो। हमारे पास होना चाहिए , और यह पेड़ की जड़ है।[ y n , … , y 1 ] x १ = y १[ एक्स1, ... , एक्सn][ यn, ... , y1]एक्स1= य1
- y 2 x 2 = y 2 [ x 2 , … , x n ] [ y n , … , y 2 ]एक्स2 जड़ का सबसे छोटा बच्चा है , और सबसे बच्चा है। यदि , रूट नोड है; अधिक recurse और एकल सबट्री का निर्माण।y2एक्स2= य2[ एक्स2, ... , एक्सn][ यn, ... , y2]
- अन्यथा, चलो और सूचकांकों हो ऐसी है कि और । बाएं सबट्री का प्री-ऑर्डर ट्रैवर्सल है, जो राइट सबट्री का है, और इसी तरह पोस्ट-ऑर्डर ट्रैवर्सल्स के लिए। बाएँ उप वर्ग में तत्व हैं, और दाएँ उप योग में तत्व हैं। प्रत्येक उपशीर्षक के लिए एक बार पुनर्खरीद करें।
वैसे, यह विधि मनमानी शाखाओं वाले पेड़ों के लिए सामान्यीकरण करती है। मनमानी शाखा के साथ, बाएं सबट्री की सीमा का पता लगाएं और इसके तत्वों को दोनों सूचियों से काट लें, फिर बाईं ओर से दूसरे सबट्री को काटने के लिए दोहराएं, और इसी तरह।j x 2 = y i y 2 = x j [ x 2 , … , x j - 1 ] [ x j , … , x n ] j - 2 = n - i + 1 i - 2 = n - j + 1 ज - २मैंjएक्स2= यमैंy2= एक्सj[ एक्स2, ... , एक्सज - १][ एक्सj, ... , एक्सn]j - 2 = n - i + 1i−2=n−j+1
j−2
जैसा कि कहा गया है, रनिंग टाइम with सबसे खराब स्थिति है (दो बच्चों के मामले में, हम प्रत्येक सूची लिनली खोजते हैं)। यदि आप सूची में निर्माण के लिए तत्व मानों से लेकर इनपुट सूचियों में पदों तक परिमित मानचित्र संरचना का निर्माण करते हैं, तो आप उसे में बदल सकते हैं। । मूल्यों से सूचकांकों तक जाने के लिए एक सरणी या परिमित मानचित्र का भी उपयोग करें; वैश्विक सूचकांकों से चिपके रहते हैं, ताकि पुनरावर्ती कॉल पूरे नक्शे प्राप्त करेंगे और तर्क के रूप में एक सीमा लेंगे कि यह जानने के लिए कि क्या कार्य करना है।Θ ( n 2 ) O ( n )O(n2)Θ(n2)एनO(nlg(n))nlg(n)
प्री-ऑर्डर ट्रैवर्सल और इन-ऑर्डर ट्रैवर्सल , आप पेड़ को इस प्रकार फिर से बना सकते हैं:[ z 1 , … , z n ][x1,…,xn][z1,…,zn]
- रूट प्री-ऑर्डर ट्रैवर्सल ।x1
- आज्ञा देना ऐसे सूचकांक कि । फिर बाएं बच्चे का इन-ऑर्डर ट्रैवर्सल है और दाएं बच्चे का इन-ऑर्डर ट्रैवर्सल है। तत्वों की संख्या के आधार पर, बाएं बच्चे का पूर्व-क्रम है और जो सही बच्चे की है। बाएं और दाएं उपप्रकार के निर्माण के लिए पुनरावृत्ति।z k = x 1 [ z 1 , … , z k - 1 ] [ z k + 1 , … , z n ] [ x 2 , … , x k ] [ x k + 1 , … , x n ]kzk=x1[z1,…,zk−1][zk+1,…,zn][x2,…,xk][xk+1,…,xn]
फिर से, यह एल्गोरिथ्म जैसा कि कहा गया है, और यदि सूची से पदों तक मानों में एक परिमित मानचित्र में प्रीप्रोसेस किया गया है, तो में प्रदर्शन किया जा सकता है ।O ( n )O(n2)O(nlg(n))
पोस्ट-ऑर्डर प्लस-इन-ऑर्डर बेशक सममित है।