কম্পিউটার

পাইথনে লিঙ্ক করা তালিকাকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম


ধরুন আমাদের একটি এককভাবে লিঙ্কযুক্ত তালিকা রয়েছে, আমাদের নিম্নলিখিত নিয়মগুলি ব্যবহার করে এটিকে একটি বাইনারি ট্রি পাথে রূপান্তর করতে হবে -

  • লিঙ্ক করা তালিকার প্রধান হল রুট।
  • প্রতিটি পরবর্তী নোড হল পিতামাতার বাম সন্তান যখন এর মান কম হয়, অন্যথায় এটি ডান সন্তান হবে৷

সুতরাং, যদি ইনপুটটি [2,1,3,4,0,5] এর মত হয়, তাহলে আউটপুট হবে

পাইথনে লিঙ্ক করা তালিকাকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম

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

  • একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি নোড গ্রহণ করবে
  • যদি নোড নাল হয়, তাহলে
    • রিটার্ন নাল
  • root :=একটি ট্রি নোড তৈরি করুন যার মান নোডের মানের সমান
  • যদি নোডের পরবর্তী শূন্য না হয়, তাহলে
    • যদি নোডের পরবর্তী মান <নোডের মান, তাহলে
      • মূলের বামে :=সমাধান (নোডের পরের)
    • অন্যথায়,
      • মূলের ডানদিকে :=সমাধান (নোডের পরের)
  • রিটার্ন রুট

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

উদাহরণ

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next
def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
   return head
class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def print_tree(root):
   if root is not None: print_tree(root.left)
      print(root.data, end = ', ') print_tree(root.right)
class Solution:
   def solve(self, node):
      if not node:
         return None
         root = TreeNode(node.val)
      if node.next:
         if node.next.val < node.val:
            root.left = self.solve(node.next)
         else:
            root.right = self.solve(node.next)
      return root
ob = Solution()
L = make_list([2,1,3,4,0,5])
print_tree(ob.solve(L))

ইনপুট

[2,1,3,4,0,5]

আউটপুট

1, 3, 0, 5, 4, 2,

  1. পাইথন ব্যবহার করে একটি বাইনারি গাছের মূল পরিবর্তন করার জন্য প্রোগ্রাম

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

  3. পাইথনে দিকনির্দেশের তালিকা ব্যবহার করে বাইনারি ট্রি অতিক্রম করার প্রোগ্রাম

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