ট্রি ক্লাসে রিকার্সিভ 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দিয়ে প্যারেন্ট খুঁজে চাইল্ড অ্যাড করা হয়।মেনু-চালিত ইন্টারফেস দিয়ে ডাইনামিক ট্রি বিল্ড।