मान लीजिए कि हमारे पास एक बाइनरी ट्री की जड़ है, पेड़ के प्रत्येक नोड का एक अनूठा मूल्य है। to_delete में मान वाले सभी नोड्स को हटाने के बाद, हमारे पास एक फ़ॉरेस्ट रह जाता है। हमें बचे हुए जंगल में पेड़ों की जड़ें ढूंढनी होंगी। तो अगर इनपुट पसंद है
अगर to_delete सरणी [3,5] की तरह है, तो आउटपुट होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक सरणी रेस परिभाषित करें
- एक विधि हल करें () को परिभाषित करें, यह नोड, to_delete सरणी और एक बूलियन प्रकार की जानकारी लेगा जो बता रही है कि नोड रूट है या नहीं। विधि नीचे की तरह काम करेगी-
- यदि नोड शून्य है, तो शून्य वापस आएं
- ध्वज:=सत्य यदि नोड का मान to_delete सरणी में है
- यदि ध्वज गलत है और is_root सत्य है, तो नोड को रेस में डालें
- नोड के बाएँ:=हल करें (नोड के बाएँ, to_delete, फ़्लैग)
- नोड का अधिकार:=हल करें(नोड का अधिकार, to_delete, ध्वज)
- झंडा सेट होने पर कोई नहीं लौटाएं, अन्यथा झूठा
- हल (नोड, to_delete, true) जैसी मुख्य विधि से हल () विधि को कॉल करें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def delNodes(self, root, to_delete): """ :type root: TreeNode :type to_delete: List[int] :rtype: List[TreeNode] """ to_delete = set(to_delete) self.res = [] self.solve(root,to_delete,True) return self.res def solve(self,node,to_delete,is_root): if not node: return None flag = node.val in to_delete if not flag and is_root: self.res.append(node) node.left = self.solve(node.left,to_delete,flag) node.right = self.solve(node.right,to_delete,flag) return None if flag else node
इनपुट
[1,2,3,4,5,6,7] [3,5]
आउटपुट
[[1,2,null,4],[6],[7]]