কম্পিউটার

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


ধরুন আমাদের একটি বাইনারি গাছ আছে, আমাদের যেকোনো নোড এবং এর বংশধরদের মধ্যে সবচেয়ে বড় পরম পার্থক্য খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুট মত হয়

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

তাহলে আউটপুট হবে 7 কারণ নোড 8 এবং 1 এর মধ্যে সবচেয়ে বড় পরম পার্থক্য।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এটি নোড গ্রহণ করবে
  • যদি নোড নাল না হয়, তাহলে
    • ইতিবাচক এবং নেতিবাচক অসীম সহ একটি তালিকা ফেরত দিন
  • বাম :=dfs(নোডের বামে)
  • ডান :=dfs(নোডের ডানদিকে)
  • res :=সাথে একটি জোড়া (সর্বনিম্ন বাম[0], ডান[0] এবং নোডের মান, এবং সর্বাধিক বাম[1], ডান[1] এবং নোডের মান)
  • উত্তর :=উত্তরের সর্বোচ্চ, (নোডের মান - res[0]) এবং (res[1] - নোডের মান)
  • রিটার্ন রিটার্ন
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • উত্তর :=0
  • dfs(root)
  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

ক্লাস TreeNode:def __init__(self, data, left =None, right =None):self.val =data self.left =left self.right =rightclass Solution:def solve(self, root):def dfs( নোড):নোড না থাকলে:[float("inf"), float("-inf")] বাম =dfs(node.left) right =dfs(node.right) res =[min(left[0]), ফেরত দিন right[0], node.val), max(left[1], right[1], node.val)] self.ans =max(self.ans, node.val - res[0], res[1] - node.val) রিটার্ন res self.ans =0 dfs(root) return self.ansob =Solution()root =TreeNode(1)root.left =TreeNode(5)root.right =TreeNode(3)root.right। left =TreeNode(2)root.right.right =TreeNode(8)root.right.left.left =TreeNode(7)root.right.left.right =TreeNode(4)print(ob.solve(root)) 

ইনপুট

root =TreeNode(1)root.left =TreeNode(5)root.right =TreeNode(3)root.right.left =TreeNode(2)root.right.right =TreeNode(8)root.right.left .left =TreeNode(7)root.right.left.right =TreeNode(4)

আউটপুট

7

  1. পাইথনে বাইনারি ট্রিতে দ্বিতীয় গভীরতম নোড খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথন প্রোগ্রাম একটি তালিকার সমস্ত জোড়ার মধ্যে পরম পার্থক্যের যোগফল খুঁজে বের করতে

  4. বিজোড় এবং জোড় অঙ্কের যোগফলের মধ্যে পার্থক্যের জন্য পাইথন প্রোগ্রাম