जब मैं इस प्रश्न को पढ़ता हूं तो पहली बात यह है कि: किस प्रकार की चीजें ग्राफ़ / पेड़ का उपयोग करती हैं? और फिर मुझे लगता है कि मैं उनका उपयोग कैसे कर सकता हूं।
उदाहरण के लिए, पेड़ के दो सामान्य उपयोग करें:
The DOM, and xml for that matter, resemble tree structures.

यह भी समझ में आता है। यह समझ में आता है कि इस डेटा को व्यवस्थित करने की आवश्यकता है । एक फाइल सिस्टम भी। यूनिक्स सिस्टम पर रूट नोड है, और नीचे शाखाबद्ध है। जब आप एक नया डिवाइस माउंट करते हैं, तो आप इसे पेड़ पर जोड़ रहे हैं।
आपको खुद से पूछना चाहिए: क्या डेटा इस प्रकार की संरचना में पड़ता है? डेटा संरचनाएं बनाएं जो समस्या को समझ में आती हैं और बाकी का पालन करेंगे।
जहां तक आसान हो, मुझे लगता है कि यह रिश्तेदार है। क्या आप पेड़ / ग्राफ को पार करने के लिए रिकर्सिव फ़ंक्शंस के साथ अच्छे हैं? अगर आपको पेड़ को संतुलित करने की ज़रूरत है तो क्या होगा?
एक प्रोग्राम के बारे में सोचें जो एक शब्द खोज पहेली हल करता है। आप किसी शब्द में खोज शब्द के सभी अक्षरों को मानचित्र में देख सकते हैं और यह देखने के लिए आसपास के नोड्स को देख सकते हैं कि वह स्ट्रिंग किसी भी शब्द से मेल खाती है या नहीं। लेकिन क्या आप एक ही सरणी के साथ ऐसा ही नहीं कर सकते थे? आपको बस इतना करना है कि बाएं और दाएं अक्षरों को जांचने के लिए एक सूचकांक को स्थानांतरित करें, और चौड़ाई से ऊपर और नीचे अक्षरों की जांच करें। ग्राफ के साथ इस समस्या को हल करना मुश्किल नहीं है, लेकिन यदि आप उनका उपयोग करने में सहज नहीं हैं तो यह बहुत अधिक काम और कठिनाई पैदा कर सकता है - बेशक आपको इसे करने से हतोत्साहित नहीं करना चाहिए, खासकर यदि आप सीख रहे हैं उन्हें।
मुझे उम्मीद है कि इन संरचनाओं के बारे में आपको सोचने में मदद मिलेगी। एक पुस्तक की सिफारिश के लिए, मुझे एल्गोरिदम का परिचय के साथ जाना होगा ।