কম্পিউটার টিউটোরিয়াল

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


মান ল করুন k এবং একটি বাইনারি সার্চ ট্রি, যেখানে প্রতিটি নোড হয় একটি লিফ নোড বা ২টি চাইল্ড ধারণ করে। আমাদের k মান ধারণকারী নোডটি খুঁজে বের করতে হবে এবং তার সিবলিং নোডের মান ফেরত দিতে হবে।

যদি ইনপুট নিচের মতো হয়:

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

k = 4, তখন আউটপুট হবে 10।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

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

  • যদি root-এর বাম এবং ডান দুটি চাইল্ড null না হয়, তবে ফেরত দিন।

  • যদি k > root-এর মান হয়, তবে:

    • যদি root-এর ডান চাইল্ডের মান k-এর সমান হয়, তবে root-এর বাম চাইল্ডের মান ans-এ যোগ করুন এবং ফেরত দিন।

    • অন্যথায়, util(root-এর ডান চাইল্ড, k, ans) কল করুন।

  • যদি k < root-এর মান হয়, তবে:

    • যদি root-এর বাম চাইল্ডের মান k-এর সমান হয়, তবে root-এর ডান চাইল্ডের মান ans-এ যোগ করুন এবং ফেরত দিন।

    • অন্যথায়, util(root-এর বাম চাইল্ড, k, ans) কল করুন।

  • মূল মেথড থেকে নিম্নলিখিত কাজ করুন:

  • ans := একটি নতুন তালিকা

  • util(root, k, ans) কল করুন

  • 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. পাইথনে বাইনারি সার্চ ট্রিতে k-তম সবচেয়ে ছোট উপাদান খুঁজে বের করার প্রোগ্রাম

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

  4. পাইথনে বাইনারি ট্রির সর্বাধিক প্রস্থ (Maximum Width) বের করার প্রোগ্রাম