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

পাইথন প্রোগ্রাম: লিংকড লিস্ট ব্যবহার করে বাইনারি ট্রি ইমপ্লিমেন্ট করা

যখন লিংকড লিস্ট ব্যবহার করে বাইনারি ট্রি ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করতে হয়, তখন রুট নোড সেট করার মেথড, ইন-অর্ডার ট্রাভার্সাল পারফর্ম করার মেথড, রুট নোডের বামে এলিমেন্ট ইনসার্ট করার মেথড, রুট নোডের ডানে এলিমেন্ট ইনসার্ট করার মেথড এবং মান সার্চ করার মেথড সংজ্ঞায়িত করা হয়।

উদাহরণ

class BinaryTree_structure:
    def __init__(self, key=None):
        self.key = key
        self.left = None
        self.right = None
    
    def set_root(self, key):
        self.key = key
    
    def in_order_traversal(self):
        if self.left is not None:
            self.left.in_order_traversal()
        print(self.key, end=' ')
        if self.right is not None:
            self.right.in_order_traversal()
    
    def insert_left(self, new_node):
        self.left = new_node
    
    def insert_right(self, new_node):
        self.right = new_node
    
    def search_val(self, key):
        if self.key == key:
            return self
        if self.left is not None:
            temp = self.left.search_val(key)
            if temp is not None:
                return temp
        if self.right is not None:
            temp = self.right.search_val(key)
            return temp
        return None

btree = None
print('মেনু (এটি ডুপ্লিকেট কি নেই ধরে নেয়)')
print('insert <data> at root')
print('insert <data> left of <data>')
print('insert <data> right of <data>')
print('quit')
while True:
    print('বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল ', end='')
    if btree is not None:
        btree.in_order_traversal()
    print()
    do = input('আপনি কী করতে চান? ').split()
    operation = do[0].strip().lower()
    if operation == 'insert':
        data = int(do[1])
        new_node = BinaryTree_structure(data)
        sub_op = do[2].strip().lower()
        if sub_op == 'at':
            btree = new_node
        else:
            position = do[4].strip().lower()
            key = int(position)
            ref_node = None
            if btree is not None:
                ref_node = btree.search_val(key)
            if ref_node is None:
                print('এই কি অস্তিত্বে নেই')
                continue
            if sub_op == 'left':
                ref_node.insert_left(new_node)
            elif sub_op == 'right':
                ref_node.insert_right(new_node)
    elif operation == 'quit':
        break

আউটপুট

মেনু (এটি ডুপ্লিকেট কি নেই ধরে নেয়)
insert <data> at root
insert <data> left of <data>
insert <data> right of <data>
quit
বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল
আপনি কী করতে চান? insert 45 at root
বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল 45
আপনি কী করতে চান? insert 78 left of 45
বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল 78 45
আপনি কী করতে চান? insert 90 right of 45
বাইনারি ট্রির ইনঅর্ডার ট্রাভার্সাল 78 45 90
আপনি কী করতে চান? quit

ব্যাখ্যা

  • BinaryTree_structure ক্লাস তৈরি করা হয়েছে।

  • এতে একটি set_root ফাংশন রয়েছে যা ট্রির রুট মান সেট করতে সাহায্য করে।

  • in_order_traversal নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা 'Left-Node-Right' অর্ডারে ট্রি ট্রাভার্স করতে সাহায্য করে।

  • insert_left নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা রুট মানের বামে এলিমেন্ট যোগ করতে সাহায্য করে।

  • insert_right নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা রুট মানের ডানে এলিমেন্ট যোগ করতে সাহায্য করে।

  • search_val নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা স্ট্যাকের উপরের থেকে একটি মান ডিলিট করে এবং ডিলিট করা মান রিটার্ন করে।

  • চারটি অপশন দেওয়া হয়েছে: 'insert at root', 'insert to left of', 'insert to right of' এবং 'quit'।

  • ব্যবহারকারীর ইনপুট/চয়স অনুযায়ী সংশ্লিষ্ট অপারেশনগুলো পারফর্ম করা হয়।

  • এই আউটপুট কনসোলে প্রদর্শিত হয়।

  1. পাইথনে বাইনারি ট্রি-তে লিংকড লিস্ট আছে কিনা যাচাই করার প্রোগ্রাম

  2. Python দিয়ে ত্রুটিপূর্ণ বাইনারি ট্রি ঠিক করার প্রোগ্রাম

  3. পাইথনে লিংকড লিস্টকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম

  4. পাইথনে ডিরেকশন লিস্ট ব্যবহার করে বাইনারি ট্রি ট্রভার্সাল