কম্পিউটার

পাইথনে একটি BST-তে Kth ক্ষুদ্রতম উপাদান


ধরুন আমাদের একটি বাইনারি সার্চ ট্রি আছে। আমাদের সেই BST-তে Kth ক্ষুদ্রতম উপাদান খুঁজে বের করতে হবে। তাই গাছটি যদি −

এর মত হয়

পাইথনে একটি BST-তে Kth ক্ষুদ্রতম উপাদান

সুতরাং আমরা যদি 3য় ক্ষুদ্রতম উপাদান খুঁজে পেতে চাই, তাহলে k =3 এবং ফলাফল হবে 7।

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

  • নোড নামে একটি খালি তালিকা তৈরি করুন
  • কল সল্ভ (রুট, নোড)
  • রিটার্ন k – নোডের ১ম উপাদান
  • সমাধান পদ্ধতি তৈরি করা হয়েছে, এটি রুট এবং নোড অ্যারে নেয়, এটি নিম্নরূপ কাজ করবে -
  • যদি রুট শূন্য হয়, তাহলে ফিরুন
  • সমাধান (রুটের বামে, নোড)
  • নোড অ্যারেতে রুটের মান যোগ করুন
  • সমাধান (রুট, নোডের ডানদিকে)

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

উদাহরণ

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         temp.left = TreeNode(data)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         temp.right = TreeNode(data)
         break
      else:
         que.append(temp.right)
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
class Solution(object):
   def kthSmallest(self, root, k):
      nodes = []
      self.solve(root,nodes)
      return nodes[k-1]
   def solve(self, root,nodes):
      if root == None:
         return
      self.solve(root.left,nodes)
      nodes.append(root.data)
      self.solve(root.right,nodes)
ob1 = Solution()
tree = make_tree([10,5,15,2,7,13])
print(ob1.kthSmallest(tree, 3))

ইনপুট

[10,5,15,2,7,13]
3

আউটপুট

7

  1. C++-এ BST-এর দুটি নোডের মধ্যে সর্বাধিক উপাদান

  2. পাইথনে রৈখিক সময়ের মধ্যে kth ক্ষুদ্রতম উপাদান খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম

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