# Check whether a binary tree is a full binary tree or not in Python

In this tutorial, we learn about the Binary tree and how to check whether a given Binary tree is a full Binary tree or not.

Example:
1:        (a)               2:        (a)
/    \                       /   \
(b)    (c)                   null  null
/   \
(d)   (e)

This is a full binary tree becouse here every node has 0 or 2 children by definition. If Binary tree node(head) is NULL
then it is also a full binary tree by definition.
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data

return True

return True

return False

if __name__ == "__main__":

#             (a)
#            /   \
#          (b)   (c)
#         /  \
#      (d)   (e)

print("Given Binary is Full Binary tree")
else:
print("Given Binary is not Full Binary tree")

OUTPUT:

Given Binary is Full Binary tree

I hope it helps you. Thanks for visiting codespeedy.

Here is a recursive function that takes in a root node of a binary tree and returns True if the tree is a full binary tree, False otherwise:

def is_full_binary_tree(root):
if root is None:
return True
if root.left is None and root.right is None:
return True
if root.left is not None and root.right is not None:
return is_full_binary_tree(root.left) and is_full_binary_tree(root.right)
return False

This function works by first checking if the root is None, in which case it returns True because an empty tree is considered to be a full binary tree. If the root is not None, it then checks if both the left and right children are None. If they are, then the root is a leaf node and the tree is a full binary tree. If both children are not None, then the function recursively checks if both the left and right subtrees are full binary trees. If they are, then the tree is a full binary tree. If any of these conditions are not met, then the function returns False.

You can use this function by passing in the root node of your binary tree. For example:

root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)

print(is_full_binary_tree(root))  # prints True