मान लीजिए, एक परिवार है जिसमें विभिन्न पीढ़ियों के सदस्य हैं। जैसे परिवार में एक पिता, उसके बच्चे और उनकी दादी हैं। लेकिन जन्म और मृत्यु प्रत्येक परिवार में होती है।
परिवार के सबसे बड़े सदस्य को मुखिया माना जाता है। इसलिए, जब 'प्रमुख' सदस्य की मृत्यु हो जाती है, तो उनका प्रत्यक्ष उत्तराधिकारी या उनके बच्चे मुखिया बन जाते हैं। हम तीन कार्यों को लागू करते हैं, पहले एक का उपयोग तब किया जाता है जब कोई बच्चा परिवार में पैदा होता है। फ़ंक्शन माता-पिता का नाम और बच्चे का नाम इनपुट के रूप में लेता है और उन्हें रिकॉर्ड में जोड़ता है।
दूसरे कार्य का उपयोग मृत्यु होने पर किया जाता है। यह मृतक परिवार के सदस्य का नाम इनपुट के रूप में लेता है और उन्हें रिकॉर्ड से हटा देता है।
तीसरा कार्य वंशानुक्रम का क्रम देता है। वंशानुक्रम का वर्तमान क्रम जब भी कहा जाता है, मुद्रित किया जाता है।
तो, इनपुट के एक सेट के लिए; हमें वंशानुक्रम के क्रम का पता लगाना होगा। इसलिए, यदि इनपुट का क्रम जन्म, जन्म, जन्म, जन्म, जन्म, मृत्यु, विरासत, मृत्यु, विरासत की तरह है, तो आउटपुट ['ज़ैक', 'जेसी' होगा। , 'उर्सुला', 'रयान', 'थिया'] ['जेसी', 'उर्सुला', 'रयान', 'थिया']
सबसे पहले परिवार का मुखिया पॉल होता है।
तब पॉल के क्रमशः जैच और जेसी नाम के बच्चे हुए।
तब यिशै के तीन बच्चे हुए; उर्सुला, रयान और थिया, उर्सुला सबसे बड़ी और थिया सबसे छोटी हैं।
तब पॉल मर जाता है। वंशानुक्रम का क्रम ['ज़ाच', 'जेसी', 'उर्सुला', 'रयान', 'थिया'] है।
फिर ज़च मर जाता है, विरासत का क्रम बन जाता है ['जेसी', 'उर्सुला', 'रयान', 'थिया']।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
परिवार :=एक नया नक्शा जिसमें मान के रूप में सूचियाँ शामिल हैं
-
मुखिया :=परिवार का वर्तमान मुखिया
-
मृत :=एक सेट
-
जन्म () फ़ंक्शन को परिभाषित करें। इसमें p_name, c_name
. लगेगा-
परिवार के अंत में c_name डालें[p_name]
-
-
फ़ंक्शन डेथ () को परिभाषित करें। यह नाम लेगा
-
(नाम) सेट डेड में जोड़ें
-
-
फ़ंक्शन इनहेरिटेंस () को परिभाषित करें। इसमें लगेगा
-
उत्तर :=एक नई सूची
-
गहराई_खोज(सिर)
-
वापसी उत्तर
-
-
एक फ़ंक्शन को परिभाषित करें गहराई_खोज() । इसमें करंट लगेगा
-
अगर करंट डेड नहीं है, तो
-
उत्तर के अंत में करंट डालें
-
-
परिवार में प्रत्येक बच्चे के लिए[वर्तमान], करें
-
गहराई_खोज(बच्चा)
-
-
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
from collections import defaultdict class Solution: def __init__(self, head_name): self.family = defaultdict(list) self.head = head_name self.dead = set() def birth(self, p_name, c_name): self.family[p_name].append(c_name) def death(self, name): self.dead.add(name) def inheritance(self): self.ans = [] self.depth_search(self.head) return self.ans def depth_search(self, current): if current not in self.dead: self.ans.append(current) for child in self.family[current]: self.depth_search(child) ob = Solution('Paul') ob.birth('Paul', 'Zach') ob.birth('Paul', 'Jesse') ob.birth('Jesse', 'Ursula') ob.birth('Jesse', 'Ryan') ob.birth('Jesse', 'Thea') ob.death('Paul') print(ob.inheritance()) ob.death('Zach') print(ob.inheritance())
इनपुट
ob = Solution('Paul') ob.birth('Paul', 'Zach') ob.birth('Paul', 'Jesse') ob.birth('Jesse', 'Ursula') ob.birth('Jesse', 'Ryan') ob.birth('Jesse', 'Thea') ob.death('Paul') print(ob.inheritance()) ob.death('Zach') print(ob.inheritance())
आउटपुट
['Zach', 'Jesse', 'Ursula', 'Ryan', 'Thea'] ['Jesse', 'Ursula', 'Ryan', 'Thea']