ধরুন আমাদের একটি মান 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