ধরুন আমাদের একটি বাইনারি গাছের মূল রয়েছে, গাছের প্রতিটি নোডের একটি অনন্য মান রয়েছে। to_delete-এ একটি মান সহ সমস্ত নোড মুছে ফেলার পরে, আমাদের কাছে একটি বন রয়েছে। বাকি বনে গাছের শিকড় খুঁজতে হবে। তাই যদি ইনপুট মত হয়
যদি to_delete অ্যারে [3,5] এর মত হয়, তাহলে আউটপুট হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারে রেস সংজ্ঞায়িত করুন
- একটি পদ্ধতি সংজ্ঞায়িত করুন solve(), এটি নোড, to_delete অ্যারে এবং একটি বুলিয়ান টাইপ তথ্য নেবে যা বলে যে নোডটি রুট বা না। পদ্ধতিটি নিচের মত কাজ করবে-
- যদি নোড নাল হয়, তাহলে null ফেরত দিন
- পতাকা :=সত্য যদি নোডের মান to_delete অ্যারেতে থাকে
- যদি পতাকা মিথ্যা হয় এবং is_root সত্য হয়, তাহলে res-এ নোড প্রবেশ করান
- নোডের বামে :=সমাধান (নোডের বামে, টু_ডিলিট, পতাকা)
- নোডের ডানদিকে :=সমাধান করুন(নোডের ডান, টু_ডিলিট, পতাকা)
- পতাকা সেট করা হলে কিছুই ফেরত দেবেন না, অন্যথায় মিথ্যা
- সল্ভ(নোড, টু_ডিলিট, সত্য) এর মতো প্রধান পদ্ধতি থেকে সমাধান() পদ্ধতিতে কল করুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
শ্রেণীর সমাধান(অবজেক্ট):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) self.res def solve(self,node,to_delete,is_root):যদি নোড না থাকে:রিটার্ন None flag =node.val in to_delete যদি পতাকা না থাকে এবং is_root:self.res.append(node) node.left =self.solve(node.left,to_delete,flag) node.right =self.solve(node.right,to_delete,flag) রিটার্ন কোনটিই নয় যদি পতাকা অন্য নোড প্রাক>ইনপুট
[1,2,3,4,5,6,7][3,5]আউটপুট
[[1,2,null,4],[6],[7]]