কম্পিউটার

পাইথনে একটি প্রদত্ত গাছ থেকে বৃহত্তম বাইনারি অনুসন্ধান সাবট্রি খোঁজার প্রোগ্রাম


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

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

পাইথনে একটি প্রদত্ত গাছ থেকে বৃহত্তম বাইনারি অনুসন্ধান সাবট্রি খোঁজার প্রোগ্রাম

তাহলে আউটপুট হবে

পাইথনে একটি প্রদত্ত গাছ থেকে বৃহত্তম বাইনারি অনুসন্ধান সাবট্রি খোঁজার প্রোগ্রাম

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

  • সর্বোচ্চ_সাইজ :=[0]
  • max_node :=[null]
  • একটি ফাংশন ট্রাভার্স () সংজ্ঞায়িত করুন। এটি নোড গ্রহণ করবে
  • যদি নোড নাল হয়, তাহলে
    • রিটার্ন নাল
  • বাম :=ট্র্যাভার্স (নোডের বামে)
  • ডান :=ট্রাভার্স (নোডের ডানদিকে)
  • lst :=বাম + [নোডের মান] + ডান
  • যদি lst সাজানো হয়, তাহলে
    • যদি max_size[0]
    • max_size[0] :=lst এর আকার
    • max_node[0] :=নোড
  • প্রত্যাবর্তন lst
  • ট্র্যাভার্স(রুট)
  • প্রধান পদ্ধতি থেকে রিটার্ন max_node[0]
  • উদাহরণ (পাইথন)

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

    class TreeNode:
       def __init__(self, data, left = None, right = None):
          self.val = data
          self.left = left
          self.right = right
    def print_tree(root):
       if root is not None:
          print_tree(root.left)
          print(root.val, end = ', ')
          print_tree(root.right)
    class Solution:
       def solve(self, root):
          max_size = [0]
          max_node = [None]
          def traverse(node):
             if not node:
                return []
          left = traverse(node.left)
          right = traverse(node.right)
          lst = left + [node.val] + right
          if sorted(lst) == lst:
             if max_size[0] < len(lst):
                max_size[0] = len(lst)
                max_node[0] = node
          return lst
    
       traverse(root)
       return max_node[0]
    ob = Solution()
    root = TreeNode(12)
    root.left = TreeNode(3)
    root.right = TreeNode(5)
    root.right.left = TreeNode(4)
    root.right.right = TreeNode(6)
    print_tree(ob.solve(root))

    ইনপুট

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

    আউটপুট

    4, 5, 6,

    1. পাইথনে প্রদত্ত পোস্টঅর্ডার থেকে একটি বাইনারি অনুসন্ধান গাছ তৈরি করুন

    2. পাইথনে একটি প্রদত্ত বাইনারি ট্রিতে বৃহত্তম সম্পূর্ণ সাবট্রি খুঁজুন

    3. পাইথনে বাইনারি ট্রির উল্লম্ব স্তর সাজানো আছে কি না তা খুঁজুন

    4. পাইথনে একটি প্রদত্ত বাইনারি ট্রিতে সবচেয়ে বড় পারফেক্ট সাবট্রি খুঁজুন