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

বাইনারি ট্রির মিরর কপি তৈরি করে BFS ট্রাভার্সাল দেখানোর পাইথন প্রোগ্রাম


বাইনারি ট্রির মিরর ইমেজ তৈরি করতে লেফট-রাইট চাইল্ড সোয়্যাপ করা হয়, তারপর BFS দিয়ে উভয় ট্রি প্রিন্ট করা হয়।

উদাহরণ

from collections import deque

class BinaryTreeNode:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None
    
    def insert_left(self, node):
        self.left = node
    
    def insert_right(self, node):
        self.right = node
    
    def find(self, key):
        if self.key == key:
            return self
        for child in (self.left, self.right):
            if child:
                found = child.find(key)
                if found:
                    return found
        return None
    
    def mirror_copy(self):
        """মিরর কপি রিটার্ন করে (রিকার্সিভ)"""
        mirror = BinaryTreeNode(self.key)
        if self.right:
            mirror.left = self.right.mirror_copy()
        if self.left:
            mirror.right = self.left.mirror_copy()
        return mirror
    
    def bfs(self):
        queue = deque([self])
        while queue:
            node = queue.popleft()
            print(node.key, end=" ")
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

# ইন্টারেক্টিভ ডেমো
root = None
while True:
    cmd = input("কমান্ড (insert/mirror/quit): ").split()
    if not cmd: continue
    if cmd[0] == 'insert':
        data = int(cmd[1])
        node = BinaryTreeNode(data)
        if cmd[2] == 'at':
            root = node
        elif cmd[2] == 'left':
            parent = root.find(int(cmd[4])) if root else None
            if parent: parent.insert_left(node)
        elif cmd[2] == 'right':
            parent = root.find(int(cmd[4])) if root else None
            if parent: parent.insert_right(node)
    elif cmd[0] == 'mirror':
        if root:
            print("মুল ট্রি BFS:", end=" ")
            root.bfs()
            print()
            mirror = root.mirror_copy()
            print("মিরর ট্রি BFS:", end=" ")
            mirror.bfs()
            print()
    elif cmd[0] == 'quit':
        break

আউটপুট

কমান্ড (insert/mirror/quit): insert 6 at root
কমান্ড (insert/mirror/quit): insert 9 left of 6
কমান্ড (insert/mirror/quit): insert 4 right of 6
কমান্ড (insert/mirror/quit): mirror
মুল ট্রি BFS: 6 9 4
মিরর ট্রি BFS: 6 4 9
কমান্ড (insert/mirror/quit): quit

ব্যাখ্যা

  • mirror_copy রিকার্সিভভাবে লেফট-রাইট সোয়্যাপ করে নতুন ট্রি বানায়।

  • মুল ট্রি অপরিবর্তিত থাকে।

  • BFS (লেভেল অর্ডার) দিয়ে উভয় ট্রি প্রিন্ট করা হয়।

  • মিরর ট্রিতে লেফট-রাইট সাবট্রি এক্সচেঞ্জ হয়ে থাকে।


  1. Python এবং Tkinter ব্যবহার করে ক্লিপবোর্ড থেকে কপি করা

  2. Python দিয়ে এক্সপ্রেশন ট্রি বানানো এবং ইভ্যালুয়েট করার প্রোগ্রাম

  3. পাইথনে টেনসরফ্লো ব্যবহার করে টেনসর তৈরি করা এবং মেসেজ প্রদর্শন করার পদ্ধতি

  4. পাইথনে গ্রেড ক্যালকুলেটর (Grade Calculator) প্রোগ্রাম