def level_order_traversal(node):
    if node == None:
        return
    queue1 = Queue()
    queue1.insert(node)
    while not queue1.is_empty():
        temp = queue1.remove()
        print temp,
        if temp.left:
            queue1.insert(temp.left)
        if temp.right:
            queue1.insert(temp.right)
Exemplo n.º 2
0
def size_of_tree_queue(node):
    if node == None:
        return
    queue1 = Queue()
    queue1.insert(root)
    size = 0
    while not queue1.is_empty():
        temp = queue1.remove()
        size += 1
        if temp.left:
            queue1.insert(temp.left)
        if temp.right:
            queue1.insert(temp.right)
    return size
Exemplo n.º 3
0
def is_binary_tree_complete(node):
    if node == None:
        #probably tree is empty
        return True
    queue = Queue()
    queue.insert(node)
    while not queue.is_empty():
        temp = queue.remove()
        # if one of the children is None
        if ((temp.left== None and temp.right) or
              (temp.right== None and temp.left)):
            return False
        elif temp.left and temp.right:
            queue.insert(temp.left)
            queue.insert(temp.right)
    return True
Exemplo n.º 4
0
def binary_tree_invert(root):
    if not root:
        return 
    queue = Queue()
    queue.insert(root)

    while not queue.is_empty():
        temp = queue.remove()
        if temp.left:
            queue.insert(temp.left)
        if temp.right:
            queue.insert(temp.right)

        transfer = temp.left
        temp.left = temp.right
        temp.right = transfer

    return root
def binary_tree_connect_nodes_at_same_level_to_linked_list(node):
    if node == None:
        return
    queue1 = Queue()
    queue1.insert(node)
    linked_list = None
    node_count = 1
    temp_list = []
    while not queue1.is_empty():
        node_count = queue1.size()
        temp = queue1.remove()
        linked_list = insert_in_linked_list(linked_list, temp)
        node_count -= 1
        if temp.left:
            temp_list.append(temp.left)
        if temp.right:
            temp_list.append(temp.right)
        if node_count == 0:
            print_linked_list(linked_list)
            for e in temp_list:
                queue1.insert(e)
            temp_list = []
            linked_list = None