# Python Program to Count Number of Leaf Node in a Tree

PythonServer Side ProgrammingProgramming

When it is required to count the number of leaf nodes in a Tree, a ‘Tree_structure’ class is created, methods to add root value, and other children values are defined. Various options are given that the user can select. Based on the user’s choice, the operation is performed on the Tree elements.

Below is a demonstration of the same −

## Example

Live Demo

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

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

self.children.append(node)

def search_val(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 count_leaf_node(self):
leaf_nodes = []
self.count_leaf_node_helper_fun(leaf_nodes)
return len(leaf_nodes)

def count_leaf_node_helper_fun(self, leaf_nodes):
if self.children == []:
leaf_nodes.append(self)
else:
for child in self.children:
child.count_leaf_node_helper_fun(leaf_nodes)

tree = None

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

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

operation = my_input[0].strip().lower()
data = int(my_input[1])
newNode = Tree_structure(data)
sub_op = my_input[2].strip().lower()
if sub_op == 'at':
tree = newNode
elif sub_op == 'below':
my_pos = my_input[3].strip().lower()
key = int(my_pos)
ref_node = None
if tree is not None:
ref_node = tree.search_val(key)
if ref_node is None:
print('No such key.')
continue

elif operation == 'count':
if tree is None:
print('The tree is empty')
else:
count = tree.count_leaf_node()
print('The number of leaf nodes are : {}'.format(count))

elif operation == 'quit':
break

## Output

Menu (this assumes no duplicate keys)
count
quit
What operation would you like to perform ? add 78 at root
What operation would you like to perform ? add 90 below 78
What operation would you like to perform ? add 8 below 78
What operation would you like to perform ? count
The number of leaf nodes are : 2
What operation would you like to perform ? quit

## Explanation

• The ‘Tree_structure’ class is created.

• It sets the ‘key’ to True and sets an empty list to children of tree.

• It has a ‘set_root’ function that helps set the root value for the Tree.

• A method named ‘add_vals’ is defined, that helps add an element to the Tree.

• Another method named ‘search_val’ is defined, that helps search for an element in the Tree.

• Another method named ‘count_leaf_nodes’ is defined, that helps get the count of the leaf nodes of the Tree.

• Another method named ‘count_leaf_nodes_helper’ is defined, that calls the previously defined function- this is a recursive function.

• Four options are given, such as ‘add at root’, ‘add below’, ‘count’ and ‘quit’.

• Depending on the option given by user, the respective operation is performed.

• This output is displayed on the console.

Updated on 15-Apr-2021 12:53:11