इसे बेहतर तरीके से हल किया जा सकता है। इसके अलावा, हम डेटा संरचना में मामूली संशोधन और पुनरावृत्त दृष्टिकोण का उपयोग करके ओ (एन) की समय जटिलता को कम कर सकते हैं। एक विस्तृत विश्लेषण और विभिन्न डेटा संरचनाओं के साथ इस समस्या को हल करने के कई तरीकों के लिए।
यहाँ एक सारांश है जो मैं अपने ब्लॉग पोस्ट में बताना चाहता हूँ :
पुनरावर्ती दृष्टिकोण - ट्री व्यास
इस समस्या से संपर्क करने का एक और तरीका इस प्रकार है। जैसा कि हमने ऊपर बताया कि व्यास कर सकते हैं
- पूरी तरह से बाईं उप पेड़ या में झूठ बोलते हैं
- पूरी तरह से सही उप पेड़ या में झूठ बोलते हैं
- जड़ तक फैल सकता है
जिसका अर्थ है कि व्यास को आदर्श रूप से प्राप्त किया जा सकता है
- बाएं पेड़ का व्यास या
- सही पेड़ का व्यास या
- बाएं उप पेड़ की ऊंचाई + दाहिने उप पेड़ की ऊंचाई + (1 रूट नोड जोड़ने के लिए जब व्यास जड़ नोड भर में फैला है)
और हम जानते हैं कि व्यास सबसे लंबा रास्ता है, इसलिए हम अधिकतम 1 और 2 को लेते हैं यदि यह पक्ष में है या मूत 3 लेता है यदि यह जड़ से फैला है।
Iterative दृष्टिकोण - ट्री व्यास
हमारे पास एक पेड़ है, हमें प्रत्येक नोड के साथ एक मेटा जानकारी की आवश्यकता है ताकि प्रत्येक नोड निम्नलिखित को जान सके:
- इसके बाएं बच्चे की ऊंचाई,
- अपने सही बच्चे की ऊंचाई और
- इसकी पत्ती नोड्स के बीच सबसे दूर की दूरी।
एक बार जब प्रत्येक नोड को यह जानकारी होती है, तो हमें अधिकतम पथ का ट्रैक रखने के लिए एक अस्थायी चर की आवश्यकता होती है। जब तक एल्गोरिथ्म खत्म हो जाता है, तब तक हम अस्थायी चर में व्यास का मान रखते हैं।
अब, हमें इस समस्या को नीचे के दृष्टिकोण में हल करने की आवश्यकता है, क्योंकि हमें रूट के लिए तीन मूल्यों के बारे में कोई पता नहीं है। लेकिन हम पत्तियों के लिए इन मूल्यों को जानते हैं।
हल करने के लिए कदम
- 1 के रूप में छोड़ दिया और राइटहाइट के साथ सभी पत्तियों को प्रारंभ करें।
- मैक्सिडिस्टेंस के साथ सभी पत्तियों को 0 के रूप में आरम्भ करें, हम इसे एक बिंदु बनाते हैं कि यदि बाईं या दाईं ओर 1 है तो हम मैक्सडिस्टेंस = 0 बनाते हैं।
- एक समय में एक ऊपर की ओर बढ़ें और तत्काल माता-पिता के लिए मूल्यों की गणना करें। यह आसान होगा क्योंकि अब हम बच्चों के लिए इन मूल्यों को जानते हैं।
दिए गए नोड पर,
- (अपने बाएं बच्चे के बाएं या दाएं अधिकतम) के रूप में बाएं हाथ को असाइन करें।
- राइटहाइट को अधिकतम (बाएं राइट या राइट बच्चे के राइटहाइट) के रूप में असाइन करें।
- यदि इनमें से कोई भी मान (बाएं या दायां) 1 अधिकतम अधिकतम शून्य है।
- यदि दोनों मान शून्य से अधिक हैं तो बायाँ भाग को बायाँ + दायाँ दाईं ओर बनायें - 1
- एक अस्थायी चर में maxDistance बनाए रखें और अगर चरण 4 में maxDistance चर के वर्तमान मूल्य से अधिक है, तो इसे नए maxDistance मान से बदलें।
- एल्गोरिथ्म के अंत में मैक्सडिस्टेंस में मान व्यास है।