কম্পিউটার

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


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

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

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

k =4., তাহলে আউটপুট হবে 10।

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

  • একটি ফাংশন util() সংজ্ঞায়িত করুন। এটি root, k, ans

    নেবে
  • যদি মূলের বাম অংশ নাল না হয় এবং রুটের ডানদিকে শূন্য না হয়, তাহলে

    • ফেরত

  • যদি k> মূলের মান, তাহলে

    • যদি মূলের ডানের মান k এর সমান হয়, তাহলে

      • উত্তরের শেষে রুটের বাম দিকের মান সন্নিবেশ করুন

      • ফেরত

    • অন্যথায়,

      • util(মূলের ডান, কে, উত্তর)

  • যদি k <মূলের মান, তাহলে

    • যদি মূলের ডানের মান k এর সমান হয়, তাহলে

      • উত্তরের শেষে রুটের ডানের মান সন্নিবেশ করুন

      • ফেরত

    • অন্যথায়,

      • util(মূলের বামে, k, ans)

  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -

  • উত্তর :=একটি নতুন তালিকা

  • util(root, k, ans)

  • উত্তর দিন[0]

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

উদাহরণ

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.val = data
      self.left = left
      self.right = right

def util(root, k, ans):
   if root.left is None and root.right is None:
      return
   if k > root.val:
      if root.right.val == k:
         ans.append(root.left.val)
         return
      else:
         util(root.right, k, ans)
   if k < root.val:
      if root.left.val == k:
         ans.append(root.right.val)
         return
      else:
         util(root.left, k, ans)

class Solution:
   def solve(self, root, k):
      ans = []
      util(root, k, ans)
      return ans[0]

root = TreeNode(6)
root.left = TreeNode(4)
root.right = TreeNode(10)
root.left.left = TreeNode(3)
root.left.right = TreeNode(5)
ob1 = Solution()
print(ob1.solve(root, 4))

ইনপুট

root = TreeNode(6)
root.left = TreeNode(4)
root.right = TreeNode(10)
root.left.left = TreeNode(3)
root.left.right = TreeNode(5)
4

আউটপুট

10

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

  2. পাইথনে একটি বাইনারি সার্চ ট্রিতে kth ক্ষুদ্রতম উপাদান খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রির যেকোন পথের বৃহত্তম যোগফল খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে একটি বাইনারি গাছের সর্বাধিক প্রস্থ খুঁজে বের করার প্রোগ্রাম