@classmethod
def from_list(cls, node, leafs):
    """ Initiate a balanced tree with one node and a list of leafs

        :param node: node for all node of the tree
        :param leafs: list of leafs

        :example:
        >>> t = Tree.from_list("+", [1, 2])
        >>> print(t)
        +
         > 1
         > 2
        >>> t = Tree.from_list("+", [1, 2, 3])
        >>> print(t)
        +
         > 1
         > +
         | > 2
         | > 3
        >>> t = Tree.from_list("+", [1, 2, 3, 4])
        >>> print(t)
        +
         > +
         | > 1
         | > 2
         > +
         | > 3
         | > 4
        >>> t = Tree.from_list("+", [1, 2])
        >>> t2 = Tree.from_list("*", [1, t])
        >>> print(t2)
        *
         > 1
         > +
         | > 1
         | > 2


        """
    len_leafs = len(leafs)
    if len_leafs < 2:
        raise ValueError(f'Not enough leafs. Need at least 2 got {len(leafs)}')
    elif len_leafs == 2:
        l_value = leafs[0]
        r_value = leafs[1]
    elif len_leafs == 3:
        l_value = leafs[0]
        r_value = cls.from_list(node, leafs[1:])
    else:
        l_value = cls.from_list(node, leafs[:len_leafs // 2])
        r_value = cls.from_list(node, leafs[len_leafs // 2:])
    return cls(node, l_value, r_value)
