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

পাইথনে বাইনারি ট্রি থেকে স্ট্রিং কনস্ট্রাক্ট (Construct String from Binary Tree)


সমস্যা বিবরণ

একটি বাইনারি ট্রি দেওয়া থাকে। প্রি-অর্ডার ট্রাভার্সাল দিয়ে স্ট্রিং বানান যেখানে নাল নোড = ()। অপ্রয়োজনীয় খালি প্যারেনথেসিস опуসর্ন করুন (one-to-one mapping বজায় রাখতে)।

উদাহরণ

ট্রি: ৫ (লেফ্ট: ৬ (রাইট: ৮), রাইট: ৭) → আউটপুট: "5(6()(8))(7)"

এলগরিদম (Recursive)

  1. pot(node) ফাংশন:
    • নাল/০ হলে খালি স্ট্রিং রিটার্ন।
    • লেফ্ট ও রাইট দুটোই নাল হলে শুধু str(node.data)।
    • s = str(node.data)।
    • লেফ্ট আছে → s += '(' + pot(node.left) + ')', নাই → s += '()'।
    • রাইট আছে → s += '(' + pot(node.right) + ')'।
    • return s।

পাইথন বাস্তবায়ন

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

def make_tree(elements):
    root = TreeNode(elements[0])
    for el in elements[1:]:
        insert(root, el)
    return root

def insert(root, data):
    from collections import deque
    q = deque([root])
    while q:
        node = q.popleft()
        if not node.left:
            node.left = TreeNode(data) if data is not None else TreeNode(0)
            break
        q.append(node.left)
        if not node.right:
            node.right = TreeNode(data) if data is not None else TreeNode(0)
            break
        q.append(node.right)

class Solution:
    def tree2str(self, t):
        def pot(node):
            if not node or node.data == 0:
                return ''
            if not node.left and not node.right:
                return str(node.data)
            s = str(node.data)
            if node.left:
                s += '(' + pot(node.left) + ')'
            else:
                s += '()'
            if node.right:
                s += '(' + pot(node.right) + ')'
            return s
        return pot(t)

ob = Solution()
root = make_tree([5,6,7,None,8])
print(ob.tree2str(root))  # 5(6()(8))(7)

ইনপুট / আউটপুট

ইনপুট: [5,6,7,None,8]
আউটপুট: 5(6()(8))(7)
  1. পাইথনে ইনঅর্ডার এবং পোস্টঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা

  2. পাইথনে প্রिअর্ডার এবং ইনঅর্ডার ট্রাভার্সাল থেকে বাইনারি ট্রি কনস্ট্রাক্ট করা

  3. পাইথনে বাইনারি ট্রির ডায়ামিটার

  4. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)