কম্পিউটার

নোড মুছুন এবং পাইথনে বন ফেরত দিন


ধরুন আমাদের একটি বাইনারি গাছের মূল রয়েছে, গাছের প্রতিটি নোডের একটি অনন্য মান রয়েছে। 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]]

  1. পাইথনে একটি বন সংযোগ করার জন্য প্রোগ্রাম

  2. পাইথনে নোড এবং ডিসেন্ডেন্টের মধ্যে পার্থক্য খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথনে একটি বাইনারি গাছের পাতা এবং নন-লিফ নোড খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে প্রিঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি তৈরি করুন