def create_tree_from_list(dict_list, i):
    """creates binary tree
    Node of tree is element of dict_list at index i.
    Right child is element of list with index 2i + 2.
    Left child is element of list with index 2i + 1.
    Args:
        dict_list (list): list of dictionaries 
        i (integer): index (i < len(dict_list))
    Returns:
        dict: complete binary tree
    """

    if i >= len(dict_list):
        return None

    else:
        tree = dict_list[i]
        tree.update({
                    "child_right": create_tree_from_list(dict_list, 2*i + 2), 
                    "child_left" : create_tree_from_list(dict_list, 2*i + 1)
                    })
        return tree