# Python Program to Find the Sum of All Nodes in a Tree

This is a Python program to find the sum of all nodes in a tree.

Problem Description

The program creates a tree and finds the sum of all nodes in the tree.

Problem Solution

1. Create a class Tree with instance variables key and children.
2. Define methods set_root, add, sum_nodes and search.
3. The method set_root takes a key as argument and sets the instance variable key equal to it.
4. The method add appends a node to the list children.
5. The method search returns a node with a specified key.
6. The method sum_nodes finds the sum of all nodes in the tree.

Program/Source Code

Here is the source code of a Python program to find the sum of all nodes in a tree. The program output is shown below.

```class Tree:
def __init__(self, data=None):
self.key = data
self.children = []

def set_root(self, data):
self.key = data

self.children.append(node)

def search(self, key):
if self.key == key:
return self
for child in self.children:
temp = child.search(key)
if temp is not None:
return temp
return None

def sum_nodes(self):
summation = self.key
for child in self.children:
summation = summation + child.sum_nodes()
return summation

tree = None

print('Menu (this assumes no duplicate keys)')
print('sum')
print('quit')

while True:
do = input('What would you like to do? ').split()

operation = do[0].strip().lower()
data = int(do[1])
new_node = Tree(data)
suboperation = do[2].strip().lower()
if suboperation == 'at':
tree = new_node
elif suboperation == 'below':
position = do[3].strip().lower()
key = int(position)
ref_node = None
if tree is not None:
ref_node = tree.search(key)
if ref_node is None:
print('No such key.')
continue

elif operation == 'sum':
if tree is None:
print('Tree is empty.')
else:
summation = tree.sum_nodes()
print('Sum of all nodes: {}'.format(summation))

elif operation == 'quit':
break```
Program Explanation

1. A variable is created to store the binary tree.
2. The user is presented with a menu to perform operations on the tree.
3. The corresponding methods are called to perform each operation.
4. The method sum_nodes is called on the tree to calculate the sum of all nodes in the tree.

Runtime Test Cases
```Case 1:
Menu (this assumes no duplicate keys)
sum
quit
What would you like to do? sum
Tree is empty.
What would you like to do? add 3 at root
What would you like to do? sum
Sum of all nodes: 3
What would you like to do? add 4 below 3
What would you like to do? sum
Sum of all nodes: 7
What would you like to do? add 5 below 3
What would you like to do? add 10 below 4
What would you like to do? sum
Sum of all nodes: 22
What would you like to do? quit

Case 2:
Menu (this assumes no duplicate keys)
sum
quit
What would you like to do? add 1 at root
What would you like to do? add 2 below 1
What would you like to do? add 3 below 1
What would you like to do? add 4 below 1
What would you like to do? add 5 below 2
What would you like to do? add 6 below 3
What would you like to do? add 7 below 4
What would you like to do? sum
Sum of all nodes: 28
What would you like to do? quit```

Sanfoundry Global Education & Learning Series – Python Programs.

To practice all Python programs, here is complete set of 150+ Python Problems and Solutions.

Note: Join free Sanfoundry classes at Telegram or Youtube