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

বাইনারি ট্রিয়ের সব নোডের সাম গণনার পাইথন প্রোগ্রাম


ট্রি ক্লাসে রিকার্সিভ sum_node মেথড ব্যবহার করে সব নোডের ভ্যালুর সাম বের করা হয়। ইন্টারেক্টিভ মেনু দিয়ে ট্রি বিল্ড করা যায়।

উদাহরণ

class TreeNode:
    def __init__(self, data):
        self.key = data
        self.children = []
    
    def add_child(self, node):
        self.children.append(node)
    
    def find_node(self, key):
        if self.key == key:
            return self
        for child in self.children:
            found = child.find_node(key)
            if found:
                return found
        return None
    
    def sum_nodes(self):
        total = self.key
        for child in self.children:
            total += child.sum_nodes()
        return total

# ইন্টারেক্টিভ ডেমো
root = None
while True:
    cmd = input("কমান্ড (add/sum/quit): ").split()
    if not cmd: continue
    if cmd[0] == 'add':
        data = int(cmd[1])
        node = TreeNode(data)
        if cmd[2] == 'at':
            root = node
        elif cmd[2] == 'below':
            parent_key = int(cmd[3])
            parent = root.find_node(parent_key) if root else None
            if parent:
                parent.add_child(node)
    elif cmd[0] == 'sum':
        if root:
            print("সাম:", root.sum_nodes())
    elif cmd[0] == 'quit':
        break

আউটপুট

কমান্ড (add/sum/quit): add 5 at root
কমান্ড (add/sum/quit): add 7 below 5
কমান্ড (add/sum/quit): add 0 below 7
কমান্ড (add/sum/quit): sum
সাম: 12
কমান্ড (add/sum/quit): quit

ব্যাখ্যা

  • ট্রি নোডে চাইল্ড্রেন লিস্ট থাকে (জেনারেল ট্রি, বাইনারি নয়)।

  • sum_nodes রিকার্সিভভাবে সাবট্রির সাম যোগ করে।

  • find_node দিয়ে প্যারেন্ট খুঁজে চাইল্ড অ্যাড করা হয়।

  • মেনু-চালিত ইন্টারফেস দিয়ে ডাইনামিক ট্রি বিল্ড।


  1. পাইথনে বাইনারি ট্রিতে রুট থেকে লিফ পর্যন্ত যেকোনো পথের সর্বোচ্চ যোগফল খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে বাইনারি ট্রির সর্বাধিক প্রস্থ (Maximum Width) বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  4. পাইথনে অ্যারের যোগফল বের করা