private TreeNode insertAVL(T element, TreeNode node) {
        if (node == null) {
            return new TreeNode(element);
        }
        if (element.compareTo(node.element) < 0) {
            node.node1 = insertAVL(element, node.node1);
        }
        else {
            node.node2 = insertAVL(element, node.node2);
        }
        return balance(node);
    }