# 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
```