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

বাইনারি সার্চ ট্রি (BST) দিয়ে সর্টিং করার পাইথন প্রোগ্রাম


বাইনারি সার্চ ট্রি (BST) কনস্ট্রাক্ট করে ইন-অর্ডার ট্রাভার্সাল দিয়ে সর্টেড আউটপুট পাওয়া যায়।

উদাহরণ

class BSTNode:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None
        self.parent = None
    
    def insert(self, node):
        if self.key > node.key:
            if self.left is None:
                self.left = node
                node.parent = self
            else:
                self.left.insert(node)
        else:
            if self.right is None:
                self.right = node
                node.parent = self
            else:
                self.right.insert(node)
    
    def inorder(self):
        if self.left:
            self.left.inorder()
        print(self.key, end=" ")
        if self.right:
            self.right.inorder()

class BST:
    def __init__(self):
        self.root = None
    
    def add(self, key):
        node = BSTNode(key)
        if self.root is None:
            self.root = node
        else:
            self.root.insert(node)
    
    def inorder(self):
        if self.root:
            self.root.inorder()

# ডেমো
bst = BST()
nums = list(map(int, input("সংখ্যাগুলো দিন: ").split()))
for n in nums:
    bst.add(n)

print("সর্টেড লিস্ট:", end=" ")
bst.inorder()

আউটপুট

সংখ্যাগুলো দিন: 67 54 89 0 11 34 99
সর্টেড লিস্ট: 0 11 34 54 67 89 99

ব্যাখ্যা

  • BST প্রোপার্টি: লেফট < রুট < রাইট।

  • ইনসার্শন সময় এই প্রোপার্টি মেইনটেইন করা হয়।

  • ইন-অর্ডার ট্রাভার্সাল BST-কে সর্টেড আউটপুট দেয়।

  • অ্যাভারেজ টাইম: O(n log n), ওয়ার্স্ট (স্কিউড ট্রি): O(n²)۔

  • ব্যালেন্সড BST (AVL, Red-Black) দিয়ে O(n log n) গ্যারান্টি।


  1. পাইথনে বাইনারি ট্রি কলারিং গেম

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

  3. বাইনারি ইনসারশন সর্টের পাইথন প্রোগ্রাম

  4. পাইথনে unittest মডিউল দিয়ে ইউনিট টেস্টিং