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

Python-এ BST-তে প্রদত্ত সমাধান নিয়ে ট্রিপলেট আছে কিনা যাচাই করা


মান লেি, আমাদের কাছে একটি বাইনারি সার্চ ট্রি (BST) আছে যাতে পূর্ণসংখ্যা মান থাকে, এবং একটি 숫ার 'total'। আমাদের খুঁজে বের করতে হবে BST-তে তিনটি উপাদানের কোনো গুচ্ছ আছে কিনা যাদের যোগফল প্রদত্ত 'total' মানের সমান।

যেমন, ইনপুট হলে (ট্রি চিত্র অনুযায়ী) total = 12, তবে আউটপুট হবে True।

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

  • temp_list := শূন্য দিয়ে আরম্ভ করা একটি নতুন লিস্ট।
  • ট্রি-কে ইনঅর্ডার ট্রাভার্স করুন এবং temp_list-এ রাখুন।
  • i কে 0 থেকে (temp_list-এর সাইজ - 2) পর্যন্ত ১ করে বাড়িয়ে লুপ চালান:
    • left := i + 1
    • right := temp_list-এর সাইজ - 1
    • যখন left < right, তখন লুপ চালান:
      • যদি temp_list[i] + temp_list[left] + temp_list[right] sum-এর সমান হয়, তবে True রিটার্ন করুন।
      • অন্যথায় যখন temp_list[i] + temp_list[left] + temp_list[right] < sum হয়, তবে left := left + 1।
      • অন্যথায়, right := right - 1।
  • False রিটার্ন করুন।

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

class TreeNode:
    def __init__(self, value):
        self.value = value
        self.right = None
        self.left = None

def traverse_inorder(tree_root, inorder):
    if tree_root is None:
        return
    traverse_inorder(tree_root.left, inorder)
    inorder.append(tree_root.value)
    traverse_inorder(tree_root.right, inorder)

def solve(tree_root, sum):
    temp_list = [0]
    traverse_inorder(tree_root, temp_list)
    for i in range(0, len(temp_list) - 2, 1):
        left = i + 1
        right = len(temp_list) - 1
        while(left < right):
            if temp_list[i] + temp_list[left] + temp_list[right] == sum:
                return True
            elif temp_list[i] + temp_list[left] + temp_list[right] < sum:
                left += 1
            else:
                right -= 1
    return False

tree_root = TreeNode(5)
tree_root.left = TreeNode(3)
tree_root.right = TreeNode(7)
tree_root.left.left = TreeNode(2)
tree_root.left.right = TreeNode(4)
tree_root.right.left = TreeNode(6)
tree_root.right.right = TreeNode(8)
print(solve(tree_root, 12))

ইনপুট

tree_root = TreeNode(5) tree_root.left = TreeNode(3) tree_root.right = TreeNode(7) tree_root.left.left = TreeNode(2) tree_root.left.right = TreeNode(4) tree_root.right.left = TreeNode(6) tree_root.right.right = TreeNode(8) 12

আউটপুট

True

  1. C++-এ BST-এ দেওয়া সমষ্টির এক জোড়া বের করা

  2. ব্যালেন্সড BST-এ দেওয়া সমের সাথে একটি জোড়া খুঁজে বের করা C++-তে

  3. Python-এ BST-তে প্রদত্ত সমাধান নিয়ে ট্রিপলেট আছে কিনা যাচাই করা

  4. পাইথন ভেরিয়েবল অস্তিত্ব আছে কিনা যাচাই করার পদ্ধতি