How to Insert a Node into a Regular Binary Tree

inserting an Image inserting an Image inserting an Image inserting an Image inserting an Image

Code:

class Queue(object):

    def __init__(self):
        self.items = []

    def enqueue(self, item):
        self.items.insert(0, item)

    def dequeue(self):
        if not self.is_empty():
            return self.items.pop()

    def is_empty(self):
        return len(self.items) == 0

    def peek(self):
        if not self.is_empty():
            return self.items[-1].value

    def __len__(self):
        return self.size()

    def size(self):
        return len(self.items)


class Node(object):

    def __init__(self, value):

        self.value = value
        self.left = None
        self.right = None


class BinaryTree(object):

    def __init__(self, root):

        self.root = Node(root)


    def inorder(self,current_node):

        '''Prints our Binary Tree In-Order Traversal'''

        if not current_node:    # tree is empty

            return

        self.inorder(current_node.left) 

        print(current_node.value,end = " ")

        self.inorder(current_node.right) 


    def insert(self,current_node,key):

        if not current_node:   # tree must be empty

            root = Node(key)

            return

        # Create a Queue Data Structure
        queue = Queue()

        # Add Current Node to the Queue
        queue.enqueue(current_node)

        # Do level order traversal until we find an Empty space

        while len(queue) > 0:

            current_node = queue.dequeue()

            if not current_node.left:

                current_node.left = Node(key) 
                break
            else:

                queue.enqueue(current_node.left) 

            if (not current_node.right):
                current_node.right = Node(key) 
                break
            else:
                queue.enqueue(current_node.right) 



tree = BinaryTree(10)


tree.root.left = Node(11)
tree.root.left.left = Node(7)
tree.root.right = Node(9)
tree.root.right.left = Node(15)
tree.root.right.right = Node(8)


print("Inorder traversal before insertion:", end = " ")

tree.inorder(tree.root) 



key = 25
tree.insert(tree.root, key) 

print() 
print("Inorder traversal after insertion:", end = " ")
tree.inorder(tree.root)