Python/data_structures/binary_tree/basic_binary_tree.py

70 lines
1.7 KiB
Python
Raw Normal View History

2019-10-05 05:14:13 +00:00
class Node: # This is the Class Node with constructor that contains data variable to type data and left,right pointers.
def __init__(self, data):
self.data = data
self.left = None
self.right = None
2019-04-07 15:53:50 +00:00
2019-10-05 05:14:13 +00:00
def display(tree): # In Order traversal of the tree
if tree is None:
2019-04-07 15:53:50 +00:00
return
if tree.left is not None:
display(tree.left)
print(tree.data)
if tree.right is not None:
display(tree.right)
return
2019-10-05 05:14:13 +00:00
def depth_of_tree(
tree,
2019-10-05 05:14:13 +00:00
): # This is the recursive function to find the depth of binary tree.
if tree is None:
return 0
else:
depth_l_tree = depth_of_tree(tree.left)
depth_r_tree = depth_of_tree(tree.right)
if depth_l_tree > depth_r_tree:
return 1 + depth_l_tree
else:
return 1 + depth_r_tree
2019-10-05 05:14:13 +00:00
def is_full_binary_tree(
tree,
2019-10-05 05:14:13 +00:00
): # This functions returns that is it full binary tree or not?
if tree is None:
return True
if (tree.left is None) and (tree.right is None):
return True
if (tree.left is not None) and (tree.right is not None):
2019-10-05 05:14:13 +00:00
return is_full_binary_tree(tree.left) and is_full_binary_tree(tree.right)
else:
return False
2019-10-05 05:14:13 +00:00
def main(): # Main func for testing.
tree = Node(1)
tree.left = Node(2)
tree.right = Node(3)
tree.left.left = Node(4)
tree.left.right = Node(5)
tree.left.right.left = Node(6)
tree.right.left = Node(7)
tree.right.left.left = Node(8)
tree.right.left.left.right = Node(9)
print(is_full_binary_tree(tree))
print(depth_of_tree(tree))
2019-04-07 15:53:50 +00:00
print("Tree is: ")
display(tree)
2019-10-05 05:14:13 +00:00
if __name__ == "__main__":
main()