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
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)
Ejemplo n.º 3
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
Ejemplo n.º 4
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
Ejemplo n.º 5
0
    def binary_tree_count_leaves_old(self, root):
        if not root:
            return 0

        queue = Queue()
        queue.insert(root)
        leaf_count = 0
        
        while queue.size()>0:
            node = queue.remove()
            if self.is_leaf(node):
                leaf_count +=1
            if node.left:
                queue.insert(node.left)
            if node.right:
                queue.insert(node.right)
        return leaf_count
Ejemplo n.º 6
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
Ejemplo n.º 7
0
def height_of_tree(head):
    if head == None:
        return 0
    queue = Queue()
    queue.insert(head)
    height = 0

    while(1):
        children_count = queue.size()
        if children_count == 0:
            return height
        else:
            height += 1

        while(children_count>0):
            node = queue.remove()
            if node.left:
                queue.insert(node.left)
            if node.right:
                queue.insert(node.right)
            children_count -= 1