मैं जानता हूँ कि जब तार के रूप में अपनी inorder और अग्रिम आदेश traversals दिया आप एक द्विआधारी पेड़ फिर से संगठित कर सकते हैं, लेकिन यह केवल क्रंमोत्तर और/या preoder traversals खोजने के लिए संभव है इनऑर्डर ट्रैवर्सल दिया गया?एक बाइनरी ट्री के अन्य दो traversals ढूँढना जब केवल एक ट्रेवर्सल दिया
उत्तर
नहीं, केवल inorder ट्रावर्सल से क्रंमोत्तर/अग्रिम आदेश को पुन: प्राप्त संभव नहीं है। यदि ऐसा होता है, तो केवल बाइनरी पेड़ को पुनर्निर्मित करना संभव होगा जिसमें केवल इनऑर्डर ट्रैवर्सल हो, जो संभव नहीं है क्योंकि एक इनऑर्डर ट्रैवर्सल आपको कई संभावित पुनर्निर्मित बाइनरी पेड़ दे सकता है।
कैसे अपने इनपुट की तरह लग रही है, और पेड़ के उद्देश्य क्या है?
यदि आपके पास पूरी तरह से संश्लेषित इन-ऑर्डर अभिव्यक्ति है, तो आपके पास एक यूनिक पेड़ है, और आप पेड़ का निर्माण करके और फिर पेड़ से प्री-एंड-ऑर्डर शर्तों का निर्माण करके प्री-एंड-ऑर्डर प्राप्त करते हैं।
आपकी अभिव्यक्ति पूरी तरह से parenthesized नहीं है, तो यह इस बात का संकेत विभिन्न पेड़ों कि आपके इन-क्रम से मेल के बीच कोई अंतर नहीं है कि है। उदा। यदि यह अंकगणितीय अभिव्यक्तियों का प्रतिनिधित्व करने वाला पेड़ है, तो x+y+z
(x+y)+z
और x+(y+z)
जैसा ही है। इसका मतलब यह है कि इससे कोई फ़र्क नहीं पड़ता कि आप किस प्री-या पोस्टऑर्डर का उपयोग करते हैं, ++xyz
और +x+yz
समान हैं।
अब अगर इस फर्क नहीं पड़ता, आप अपने इन-क्रम के कई posssible निरूपण के बारे में चिंता करने की जरूरत नहीं है। बस एक प्रतिनिधित्व का चयन करें, और उसके बाद इस पेड़ से प्रेरित पूर्व और पोस्ट-ऑर्डर की गणना करें।
आप केवल "inorder" ट्रेवर्सल, आप कई अलग अलग द्विआधारी पेड़ का निर्माण कर सकते दिया जाता है। यही है, आप केवल "इनऑर्डर" का उपयोग करके "अद्वितीय" पेड़ का वर्णन नहीं कर सकते। – Aziz